EnjoyingSoft之Mule ESB開發教程第一篇:初識Mule ESB


我們在做企業集成項目的時候,經常會用到很多開源中間件,比如企業服務總線,消息中間件,服務框架等。在使用這些開源中間件的時候,我們也趟過了很多的坑,EnjoyingSoft,就是享受這些軟件,其中積累的經驗分享給大家,希望為開源事業做一份貢獻。這篇系列主要說的是企業服務總線Mule ESB。

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

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

1. Mule ESB基本介紹

Mule ESB是世界上使用最廣泛的開源企業服務總線(ESB)產品,已擁有超過數百萬的下載量,以及來自世界各地數十萬個開發人員,很多世界五百強企業選擇Mule ESB作為企業集成平台。通過Mule,企業可以在短時間內輕松地創建並集成應用服務,Mule ESB消除了系統集成的復雜度,使開發人員能夠在異構系統和服務之間,輕松地構建出高性能的集成應用。

和傳統的ESB不一樣,Mule ESB是一個輕量級的ESB,內核基於SEDA模型和Spring框架構建。基於Spring,意味有着非常靈活的擴展性。同時Mule ESB不僅僅是一個ESB,它也是流行的微服務體系中的一部分。這個系列我們着重介紹它的ESB功能,后續我們再着重介紹它的API管理等功能。

2. Mule ESB社區版和企業版

和很多開源軟件一樣,Mule ESB分成兩個版本,社區版和企業版。其中社區版是免費使用的。而企業版則需要付費訂閱使用,功能更強大。如果企業預算充足,則可以選擇企業版。或者使用Mule ESB社區版,在社區版基礎上做擴展,在有技術支持的情況下,同樣可以收到良好的效果。

關於社區版和企業版的主要區別,可以參照下表。如何選擇可以參考具體的業務場景和企業情況。Anyway,由於Mule ESB是開源的,我們在社區版上可以有很多的靈活擴展。

3. Mule ESB常用場景

我們來說一下Mule ESB的常見應用場景,可以更好的理解Mule ESB到底可以幫助我們解決什么問題。

  1. 舊系統改造,開放系統的服務能力。舉個例子,我們有一個電商系統,需要調用SAP ERP的訂單接口來創建訂單。這個時候就需要將SAP的訂單服務暴露成我們流行的Rest Service接口,以方便電商系統調用。當然電商系統可以直接使用SAP的JCO包來調用SAP的BAPI Function,但顯然暴露一個通用的Rest Service更易於調用。使用Mule ESB實現如下:

  2. 系統集成。舉個例子,很多系統之間數據交互可能還是用FTP目錄。尤其是企業跟企業之間的數據交互,比如,A企業丟一個EDI 文件到B企業的FTP目錄,然后B企業會從FTP目錄下載解析並放置到數據庫。這個場景用Mule ESB實現就很方便。

  3. ETL。市面上有很多開源的ETL軟件,其實Mule ESB也有ETL的功能,通過Flow設定ETL的數據轉換和數據流向。下圖就演示了Mule的ETL和數據分發功能。

4. Mule ESB軟件安裝

用一個相對寬泛的標准來划分,Mule ESB軟件可以分成兩部分。

一部分是客戶端,也就是基於Eclipse的Anypoint Studio,客戶端就是用來開發集成應用的,通常面向的用戶就是我們的開發人員。由於是基於Eclipse環境,所以Java開發人員會很熟悉,同時Anypoint Studio也可以集成Git,SVN,Maven,Junit,Jenkins等一系列生態工具。

當然作為其他語言的開發人員也不用擔心,Anypoint Studio是一個可視化的拖拽的開發環境,大部分的工作只需要使用鼠標拖拽組件,配置屬性即可。

還要一部分是服務端,也就是Mule Runtime,也可以稱作Container,容器,注意不要跟Docker的概念混淆。這里的Container指的是Java Container,你可以大概想象成Tomcat類似的東西。客戶端開發的應用就部署運行在Mule Runtime中。

需要注意的是,Mule Runtime是一個獨立的Container,只依賴JDK,並不依賴其他第三方的容器。服務器中只需要安裝JDK和Mule Runtime,即可運行Mule應用。還有一種不太常見的做法,就是把Mule App跑在第三方的容器里(比如Tomcat等),通過對容器的擴展來支持Mule App。不過我們不推薦這種做法,還是推薦使用獨立的Mule Runtime,也就是官方說的Standalone版本。

客戶端安裝

Anypoint Studio是基於Eclipse構建的,你可以在這里下載到(Windows 64BitMac 64Bit)。請根據你的客戶端的操作系統選擇對應的版本。我們只要在Windows或者Mac電腦上安裝好JDK8之后,解壓縮Zip包,雙擊即可打開。打開的界面如下:

由於Anypoint Studio默認只內嵌了Mule ESB企業版運行時,如果你想使用社區版的話,我們還需要安裝Mule ESB社區版運行時。為什么客戶端也需要Runtime?這很容易理解,我們開發調試都需要使用Runtime,難道你編寫代碼后,不運行和調試嗎-😃

安裝社區版運行時,可以使用下列步驟。

  1. 點擊Help/Install New Software...菜單

  2. 在Work with下拉框中選擇Mule Runtimes for Anypoint Studio

  3. 選中Mule ESB Server Runtime 3.9.0 CE,CE就是Community Edition,社區版的意思。然后點擊Next一直到完成。

服務端安裝

服務端不區分操作系統,你可以從這里下載到3.9.0版本的社區版Runtime。Mule ESB Runtime可以運行在Windows,Linux,Mac等操作系統上,我們推薦在生產環境使用Linux部署Mule ESB Runtime。服務端的安裝也很簡單,只要在服務器上安裝好JDK8之后,解壓縮Runtime即可。

5. 第一個Mule ESB應用- Hello world

我們學習新的語言和框架都會使用經典的Hello world程序,這里也不例外。我們要做的就是,使用Mule ESB建立一個HTTP服務,當用戶訪問HTTP端口后,返回Hello world。開發步驟很簡單:

  1. 點擊File/New/Mule Project,新建Mule工程,這里選擇使用CE版,也就是社區版,然后一步步Next直到完成。

  2. 拖入HTTP組件到空白的畫布中。

  3. 選擇畫布上的Http組件,在屬性頁面新增Connector Configuration,在彈出窗口設定偵聽的端口,注意不要和你本機的端口沖突。

  4. 拖入Set Payload組件,在屬性頁面,設定Value值,Hello word。

  5. 在工程項目上右擊彈出菜單,Run As/Mule Application。稍等片刻,Console窗口會出現"Mule is up and kicking",表示Mule已經開始工作了!

  6. 使用Postman訪問HTTP端口,返回Hello world,Mule。恭喜你,你是一個Mule開發者了 -😃

使用Mule ESB上手非常簡單,我們后續會介紹更多的組件,比如你需要從數據庫獲取數據,那么就使用Database,還有更多組件等待挖掘。

6. 部署Mule ESB應用

我們已經在客戶端開發完成了Hello world,也順利跑起來了。但是如何部署到服務端呢。和常見的Java開發一樣,我們也需要打包應用。這里我們用的是普通工程,我們通過一個Export操作,即可導出Mule App(當然Mule App也支持Maven工程,可以通過Maven打包)。在工程項目上右擊彈出菜單,Export...,然后在對話框中選擇Anypoint Studio Project to Mule Deployable Archive。注意這里不要選中Attach project sources。

將導出的Zip包放入到Mule Runtime的apps目錄下,然后啟動Mule Runtime。如果是Linux或者mac,那么在Mule Runtime的bin目錄下執行./mule啟動命令。如果是Windows,雙擊執行bin目錄mule.bat即可啟動。

然后使用Postman訪問服務器,你會得到和Studio一樣的效果。

本文同步發文於EnjoyingSoft BlogsCSDN簡書

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

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


免責聲明!

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



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