1. 程式人生 > >Mule ESB 開發例項基本概念介紹

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!"

doc:name="Set Payload"/>

    <echo-componentdoc:name="Echo"/>

</flow>

具體細節後面會有講的。

流中可以依據功能劃分為三大類:

         Message processor(訊息處理器):對訊息進行加工處理,如filtertransformerrouter等。

         Message source(訊息源):flow開始的地方,接收訊息進入流中,觸發處理器,如:Inbound/Outbound Endpoints

         Component(元件):主要實現一些特殊的功能,mule studio

中提供的完成不了的。

2、Mule Message

訊息,是通過整個應用程式可能流經很多flow。它有兩個重要的組成部分:

         Message header:包含該訊息的基本的元資料。元資料是由屬性(properties)和變數(variables)組成,元資料可以為我們提供有用的資訊,譬如告訴我們這個訊息去向哪裡。元資料都有一個特定的範圍來規定它的生命週期。

屬性(properties)的範圍有兩種:

Inbound properties:在訊息源頭被建立,不能被使用者設定和修改。

Outbound properties:可以被使用者配置,outbound屬性如果隨著一個message

從一個Flowoutbound endpoint(出口端)流近另一個FlowInbound endpoint(入口端)可以變成Inbound properties。在一些特殊情況,如新的Flowflow-ref而不是transport的話,範圍還是沒有改變。

         變數(variables)是使用者自定義的元資料,也有兩種範圍:

                            Flow variables:僅存在當前flow中。

                            Session variables:存在這應用程式中。

         Message payload:是你真正要在應用程式中傳輸的資料,訊息頭中的元資料只是起到更好的表明要傳輸的資料,而payload才是你真正要傳輸的資料。

工作環境:

Canvas:是用來佈局各個元件的,你可以在右上角搜尋需要的元件名或者根據分類查詢。

下面可以切換三種檢視,message flow:就是當前檢視、global elements:定義的全域性元素、configuration xmlxml編輯的檢視。

Package explorerflows檔案中存放的.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-wayrequest-response。單向和請求響應。

Host,port,path等。

Advancedhttp 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。在流中我們首先定義了一個httpinbound-endpoint,設定了交換模式為請求-響應,主機為localhost,埠號為8081,顯示名為HTTP。接著是輸出元件echo。這就構成了一個最基本的流。這裡沒有定義聯結器,系統會提供一個預設的給它。