Mule ESB 開發例項基本概念介紹
1、Flow:
流,也就是訊息流是由接收訊息,處理訊息,為訊息選擇路徑等一系列元件組成的。它是mule中的核心思想,十分重要。以下是一個簡單flow的例子以及程式碼:
<flowname="Simple_Example_Flow1"doc:name="Simple_Example_Flow1">
<http:inbound-endpointexchange-pattern="request-response"host="localhost"port="8081"doc:name="HTTP"path="kittens"/>
<set-payloadvalue="Kittens? Kittens!"
<echo-componentdoc:name="Echo"/>
</flow>
具體細節後面會有講的。
流中可以依據功能劃分為三大類:
Message processor(訊息處理器):對訊息進行加工處理,如filter,transformer,router等。
Message source(訊息源):flow開始的地方,接收訊息進入流中,觸發處理器,如:Inbound/Outbound Endpoints。
Component(元件):主要實現一些特殊的功能,mule studio
2、Mule Message:
訊息,是通過整個應用程式可能流經很多flow。它有兩個重要的組成部分:
Message header:包含該訊息的基本的元資料。元資料是由屬性(properties)和變數(variables)組成,元資料可以為我們提供有用的資訊,譬如告訴我們這個訊息去向哪裡。元資料都有一個特定的範圍來規定它的生命週期。
屬性(properties)的範圍有兩種:
Inbound properties:在訊息源頭被建立,不能被使用者設定和修改。
Outbound properties:可以被使用者配置,outbound屬性如果隨著一個message
變數(variables)是使用者自定義的元資料,也有兩種範圍:
Flow variables:僅存在當前flow中。
Session variables:存在這應用程式中。
Message payload:是你真正要在應用程式中傳輸的資料,訊息頭中的元資料只是起到更好的表明要傳輸的資料,而payload才是你真正要傳輸的資料。
工作環境:
Canvas:是用來佈局各個元件的,你可以在右上角搜尋需要的元件名或者根據分類查詢。
下面可以切換三種檢視,message flow:就是當前檢視、global elements:定義的全域性元素、configuration xml:xml編輯的檢視。
Package explorer:flows檔案中存放的.mflow檔案,就是canvas中顯示的檔案。
Outline:縮圖。Console:控制平臺。
全域性元素:
你可以定義元素為全域性的,這樣可以在多處呼叫,定義全域性有兩種方法,一種在global elements中直接新增一個,選擇你要新增的元素以及相應屬性。另一種是在xml編輯環境編寫。Note:全域性元素要有name屬性,這樣才可以被別處呼叫。通過<元素名-ref name=””>標籤被呼叫。
Visual editor(檢視編輯):
中間是畫布,用來將各種元素拖拽到這裡佈局配置,右側是提供的各個元素,分成了八類,依次是Endpoints, Scopes, Components, Transformers, Filters, Flow control, Error handling, Cloud connectors。如果你想使用哪個元素,直接拖拽到畫布上,雙擊即可以開啟配置面板,配置相應屬性。
以下會分開講各類元素功能以及相應配置,檢視編輯和xml編輯在一起講,最後會有綜合在一起的例子。
3、Endpoints(端點):
用來接收和傳送資料,負責連線外部資源併發送資料。分為Inbound endpoints輸入端點,Outbound endpoints輸出端點。端點需要關聯一個connector聯結器完成輸入輸出。如果沒有配置聯結器系統會預設配置一個。
我們建立一個例子,右側拖拽一個http端點到畫布上,再在filter上搜索echo,找到在components中,拖拽跟http端點放在一起。Echo是一個輸出元件,如圖:
雙擊http端點,出現配置面板如圖。
這裡有五個選項標籤,
General中可以配置顯示名稱,預設為http。
資訊交換模式,有one-way和request-response。單向和請求響應。
Host,port,path等。
Advanced中http outbound在這裡會比inbound多一個是否重定向的選項。
我們什麼也不需要配置,直接ok.
右鍵點選flows資料夾中mflow檔案,選擇作為mule application程式執行。
在瀏覽器中打http://localhost:8081/任意字元,回車。就會在瀏覽器中出現該字元。
看一下xml配置檔案:
<flow name="sudy_muleFlow1" doc:name="sudy_muleFlow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost"
port="8081" doc:name="HTTP"/>
<echo-component doc:name="Echo"/>
</flow>
首先定義了一個流,命名為sudy_muleFlow1,顯示名為sudy_muleFlow1。在流中我們首先定義了一個http的inbound-endpoint,設定了交換模式為請求-響應,主機為localhost,埠號為8081,顯示名為HTTP。接著是輸出元件echo。這就構成了一個最基本的流。這裡沒有定義聯結器,系統會提供一個預設的給它。