Mule ESB在眾多開源的ESB中處於領先者的地位,MuleSoft公司也作為獨角獸,2017年在紐交所上市。我們作為MuleSoft的合作伙伴也有幸參與其中,在六年多的時間里,我們使用Mule ESB實施,包括使用Mule ESB企業版實施,或者在社區版基礎上擴展,使用Mule ESB社區版實施,幫助國內眾多的企業成功上線SOA項目。
使用Mule ESB的過程中,體會到其快速的開發效率,以及優秀的架構設計。同時也深感國內這塊資料非常稀少,所以計划使用8篇文章來寫Mule ESB的基礎課程系列。
- EnjoyingSoft之Mule ESB開發教程第一篇:初識Mule ESB
- EnjoyingSoft之Mule ESB開發教程第二篇:Mule ESB基本概念
- EnjoyingSoft之Mule ESB開發教程第三篇:Mule message structure - Mule message結構
- EnjoyingSoft之Mule ESB開發教程第四篇:Mule Expression Language - MEL表達式
- EnjoyingSoft之Mule ESB開發教程第五篇:控制消息的流向-數據路由
- EnjoyingSoft之Mule ESB開發教程第六篇:Data Transform - 數據轉換
- EnjoyingSoft之Mule ESB開發教程第七篇:SOAP Web Service的消費和創建
- EnjoyingSoft之Mule ESB開發教程第八篇:使用API構建Rest Service
1. 使用Anypoint Studio開發
Anypoint Studio是 MuleSoft提供的基於 Eclipse架構的集成開發環境 (IDE) 。使用Anypoint Studio,程序員可以幾分種內輕松地創建出集成化的流程圖,並使用圖形化轉換器來完成數據的映射。這里的映射就是指消息轉換,消息轉換是ESB很重要的功能。Anypoint Studio的圖形化轉換器功能非常強大,可以全方面的轉換數據,包括數據結構,數據類型,數據內容的轉換等。注意,圖形化轉換器是企業版才有的功能,社區版則需要自行開發,我們在社區版做過類似的圖形化轉換工具。
Anypoint Studio可以讓開發人員用拖拽的方式把連接器(Connectors)、轉化器(Transformers)以及其他Processor放到開發環境的畫布上,Anypoint Studio會自動把圖形化的流程界面轉化為后台的XML配置文件。
Anypoint Studio默認集成Mule ESB企業版運行時,我們也可以在Anypoint Studio上集成社區版運行時,具體可參考上一篇文章。
下圖是Anypoint Studio的各個區域說明。
-
包資源瀏覽器
和Java工程類似,管理工程項目的資源。
-
畫布
主要的可視化開發環境,通過拖拽的方式組織邏輯,定義屬性。
-
工具箱
包括Connector,Processor等開箱即用的組件。
-
連接探索器
這里可以展示全局的連接器配置屬性。
-
控制台
和Java工程一樣,Console輸出控制台。
在主界面上有三個Tab頁簽,其中圖形化設計器和XML編輯器是可以互相切換的。所以你可以使用圖形化的拖拽開發,熟悉Mule的工程師也可以直接使用XML編輯器來完成工具。需要注意的是,有些屬性在圖形化界面是無法設定的,這個時候你只能在XML編輯器中完成設定工作。好在XML編輯器也提供代碼上下文語法提示,可以方便開發工程師輸入XML元素。
-
Message Flow
圖形化設計器頁簽,在這里可以拖拽組件,編輯組件屬性。
-
Global Elements
全局元素列表頁簽,所謂全局元素,可以理解成這些元素是全局共享,可以被其他元素所引用。
-
Configuration XML
點擊此頁簽,切換到XML編輯器。實際上,圖形化界面就是對XML代碼的渲染。
2. Mule ESB Application Structure - Mule ESB應用程序結構
我們來看一個基於Maven項目,使用典型的archetype構建的應用程序的目錄結構,可以看到一般分成src/main/java,src/main/resources,src/test/java,src/test/resources等目錄。每個目錄的作用Java程序員都很清楚。
我們再來看看Mule ESB Application的結構是什么。從圖示可以發現,Mule的應用程序和Java應用程序幾乎一致,其中有幾個新目錄着重介紹一下。
-
src/main/app
這個目錄就是放置Mule的配置文件,也就是Mule Configuration File。打開Mule Configuration File就會開啟設計器界面。
-
src/main/api
這個目錄是放置Restful API的定義文件。
-
src/main/wsdl
這個目錄是放置SOAP Webservice的WSDL文件。
3. Mule ESB Application整體構造
我們在上一篇文章已經對Mule ESB Application有了一個初步的認識,總結起來,Mule的應用程序就是由一個或者多個Mule Configuration File組成,每個Mule Configuration File里面可以放置一個或者多個Flow。每一個FLow又是由Connector和Processor等組成。
而Flow是Mule的核心概念,下圖展示了Flow的結構。
4. Mule ESB構造元素 - Flow
Mule ESB的應用程序通常是設計用來接收和處理消息。接收消息我們通常使用Connector Source來做,而處理消息通常使用一個或者多個Processor來做。Flow就是用來組織Connector和Processor的組。在一個Flow中,你可以將多個單獨的Mule元素鏈接起來,用來實現接收,處理,過濾,路由消息等功能。
Flow實際就是上圖的邊框。實際還有Sub Flow的概念,主要用於Flow的公用,這些不展開講述。
5. Mule ESB構造元素 - Connector
Mule的Connector是其非常優秀的功能,數百個開箱即用Connector可以幫助開發者連接不同的應用。從常見的HTTP,TCP,FTP,LDAP等協議,Hadoop大數據,到大型的商用系統SAP,Oracle,Salesforce,Mule都提供了相應的Connector。
Connector又分成Source Connector(又稱為Inbound Connector)和Target Connector(又稱為Outbound Connector)。
Source Connector用來接收消息,可以理解成監聽器,而Target Connector是用來發送消息的組件。
6. Mule ESB構造元素 - Processor
Mule的Processor包含的內容更廣泛,從Studio右側的工具箱可以看到很多的控件元素,除去上文講述的Connector,余下的基本都可以歸納到Processor。
Processor大概可以分成幾類。
-
Transformers
可以稱作轉換器,用來轉換消息的類型,結構和內容,比如將XML換成JSON。
-
Components
組件,可以使用Java或者腳本語言組件,比如JavaScript等。這些組件使用程序語言來描述商業邏輯。
-
Flow Control
控制消息的流向,比如消息的路由,消息的分割聚合等。
-
Scopes
通過Scope,我們可以改變內部Processor的行為特征。
-
Filters
過濾消息,我們可以定義規則過濾非法的消息。
下圖總結了本文所講述的內容,該Flow包含了上述所說的幾類Processor。
本文已經講述了Mule的基本概念,包括Mule ESB Application,Flow,Connector,Processor等。貫穿其中的就是消息,也就是Mule Message。Mule Message是Mule開發中非常重要的概念,下篇文章將着重講解Mule Message。
本文同步發文於EnjoyingSoft Blogs ,CSDN,簡書
訪問EnjoyingSoft 網站,獲取更多Mule ESB 社區版 實施幫助。
歡迎轉載,但必須保留原文和此段聲明,且在文章頁面明顯位置給出原文鏈接,否則保留追究法律責任的權利。