EnjoyingSoft之Mule ESB開發教程第二篇:Mule ESB基本概念


Mule ESB在眾多開源的ESB中處於領先者的地位,MuleSoft公司也作為獨角獸,2017年在紐交所上市。我們作為MuleSoft的合作伙伴也有幸參與其中,在六年多的時間里,我們使用Mule ESB實施,包括使用Mule ESB企業版實施,或者在社區版基礎上擴展,使用Mule ESB社區版實施,幫助國內眾多的企業成功上線SOA項目。

使用Mule ESB的過程中,體會到其快速的開發效率,以及優秀的架構設計。同時也深感國內這塊資料非常稀少,所以計划使用8篇文章來寫Mule ESB的基礎課程系列。

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 BlogsCSDN簡書

訪問EnjoyingSoft 網站,獲取更多Mule ESB 社區版 實施幫助。

歡迎轉載,但必須保留原文和此段聲明,且在文章頁面明顯位置給出原文鏈接,否則保留追究法律責任的權利。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM