關鍵性概念
消息(Message)與事件(Event)
Mule的工作方式是通過對源自外部的事件進行響應來觸發(fā)(比如通過接受消息)召廷。遵循了事件驅動構架(EDA- Event Driven Architecture)的概念蒲列。
在最簡單的應用中,Mule應用通過若干個消息處理器來接受事件并將其作為消息進行處理火鼻。
消息處理器被安排在一個或多個流程圖中。
大型消息或者消息流可以通過拆分成記錄通過批處理作業(yè)進行處理棉浸,而不需要使用流程圖
理解基本的流程圖架構是理解Mule的關鍵揖曾。本質上贩毕,每個Mule流程圖包含了一系列的消息處理器和消息源來接受和處理消息悯许。外部的客戶端通過各種不同的通訊協(xié)議或方法來觸發(fā)消息源,例如JMS, HTTP, FTP, JDBC, 或文件辉阶。每種消息源會翻譯指定的通訊協(xié)議或方法并將源數(shù)據(jù)封裝為標準的消息格式先壕,然后將消息傳給流程圖中的消息處理器。也可以在流程圖中使用連接器來創(chuàng)建傳出連接谆甜,藉此請求外部的資源垃僚、服務或者其他的Mule應用。
Mule應用通常會包含多個流程圖规辱,通過不同的方式結合在一起來來滿足特定的用戶系統(tǒng)集成需求谆棺。一個流程圖可以通過直接引用調用另一個流程圖,或者通過常用的通訊協(xié)議或方法進行調用罕袋,比如JMS, HTTP, FTP, 或文件改淑。被調用的的流程圖可能在同一個Mule應用中,也可能是在身處網(wǎng)絡任意一角的另一個Mule應用中浴讯。
流程圖(Flow)
一個流程圖即一種結構溅固,在其中你將若干個獨立的處理器連接起來,通過它們對消息來進行接受兰珍、處理以,并最終發(fā)送询吴。你可以將許多個流程圖連接起來組成完整的應用掠河,然后將其部署,可是部署到Mule服務器也可以其他應用服務器猛计,或者部署到云端唠摹。
在最簡單的應用中,流程圖即消息處理器的序列奉瘤。進入流程圖的消息可能會通過各種各樣不同的處理器勾拉。下圖所示的,是Mule首先通過請求-相應模式下的傳入節(jié)點接收消息盗温。然后將消息的內容轉換成新的格式藕赞。接著在一個組件中將消息按照業(yè)務邏輯進行處理之后,將處理后的消息通過消息源作為響應返回卖局。
通常在Anypoint Studio圖形界面里斧蜕,消息處理器都會有對應的圖標⊙馀迹可以作為消息源批销,處理器或者組件進行呈現(xiàn)洒闸。同時又作為XML元素,組成了Mule應用的XML文件均芽。在Mule應用XML文件中的流程圖元素下的XML元素通常相應的會在圖形界面的流程圖中的適當位置顯示相應的圖標丘逸。
下面的例子所示的,是在Anypoint Studio的圖形編輯器中的一個簡單的流程圖掀宋。點擊XML Editor標簽可以切換到XML視圖來查看同一個Mule應用的XML內容深纲。
消息源(Message Sources)
Mule對消息(也可稱作事件)進行處理,其傳入源頭可能是Mule的外部資源布朦。舉例來說囤萤,消息可能源自下列事件之一:移動設備發(fā)送到請求來消耗資源,數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生變更或者SaaS應用中新創(chuàng)建了一個客戶ID是趴。
大多數(shù)的流程圖中的第一個處理器是用來接收新的消息并將他們放到處理的隊列中涛舍。消息源,如上例所示唆途,是傳入的HTTP節(jié)點富雅。它從一個或多個外部的源頭接收消息,觸發(fā)了流程圖的執(zhí)行肛搬。Mule中的消息源通常是Anypoint連接器没佑,是用來提供與特定外部資源的連接的元素。通常藉由標準協(xié)議(比如HTTP, FTP, SMTP)或者第三方API(Salesforce.com, Twitter, 或者 MongoDB)進行連接温赔。
消息處理器(Message Processors)
Mule的消息處理器通過類別進行分組:
- 格式轉換器(Transformer)
- 組件(Component)
- 過濾器(Filter)
- 作用域(Scope)
- 路由(Router)
Mule格式轉換器是節(jié)點間交換數(shù)據(jù)的關鍵蛤奢,通過它們Mule將消息負載轉換成目標應用可以理解的格式。Mule也可對消息進行增強陶贼,使得在數(shù)據(jù)處理過程中可以獲取額外的數(shù)據(jù)并附加到消息之中啤贩。
Mule使用組件來實現(xiàn)特定業(yè)務的后臺處理,例如檢查客戶信息或者數(shù)據(jù)庫中的庫存信息拜秧。組件將消息路由到正確的應用痹屹,例如后臺訂單系統(tǒng)。Mule使用分階段式的事件驅動架構(SEDA : Staged Event-Driven Architecture)進行流程圖的多核異步消息處理枉氮。重點在于志衍,組件本身并不需要含有Mule相關的功能代碼。組件可以是POJO聊替,Spring bean楼肪,Java bean,Groovy腳本惹悄⊙痛牵可以是包含了業(yè)務邏輯的處理數(shù)據(jù)的各種Web服務。甚至可以用其他語言實現(xiàn):Python, JavaScript, Ruby和PHP。Mule的流程圖元素庫支持大部分常見的企業(yè)系統(tǒng)集成模式象缀。
另外流程圖也可以包含過濾器蔬将,作用域以及路由。譬如央星,你可以使用過濾器在應用收到的消息中進行IP地址白名單過濾霞怀。你可以用作用域將若干消息處理器包裹起來,然后將處理的結果緩存起來莉给。你可以根據(jù)消息負載中的內容來將消息分發(fā)往不同的接收者毙石。Mule有一系列的過濾器,作用域以及路由來幫助你自由的定義流程圖來靈活的處理消息颓遏。
在流程圖中布置消息處理器的過程中徐矩,你可以結合Mule表達式(MEL – Mule Expression Language)靈活的從消息及系統(tǒng)運行環(huán)境中提取信息,并根據(jù)這些信息來驅動Mule的處理邏輯叁幢。
Mule表達式(Mule Expression Language)
Mule表達式(MEL)主要用來在Mule中獲取滤灯、操縱及使用取自Mule消息或系統(tǒng)運行環(huán)境中的信息。
在Mule應用運行過程中曼玩,可在以下的場合利用表達式:
取得可用來處理當前消息的信息
設置或操作消息頭或消息負載中的值
對于消息鳞骤、應用、Mule實例或服務器中的信息進行操作
#[message.inboundProperties.propertyName]
更多關于MEL的內容:
? Mule Expression Language Basic Syntax
批處理 (Batch Processing)
除了流程圖之外黍判,Anypoint Studio還支持批處理作業(yè)豫尽。批處理作業(yè)的功能是:將消息分割成獨立的更小單位的記錄,對每條記錄進行處理顷帖。在處理后將處理結果生成報告美旧,根據(jù)需要將處理過的內容輸出到其他的系統(tǒng)或隊列中去。批處理作業(yè)適用于流式輸入贬墩,以及“接近實時”的SaaS應用間數(shù)據(jù)集成榴嗅。
批處理作業(yè)是Mule應用中比流程圖更高層級的頂層元素,為Mule消息處理提供記錄級的I/O震糖。批處理將大數(shù)據(jù)消息分割成小單位記錄集來進行異步處理。與流程圖處理消息的機制相類似趴腋,批處理對記錄進行處理吊说。
批處理作業(yè)包含了一個或多個批處理步驟,按順序對流過的記錄進行處理优炬。每個步驟中可以包含任意數(shù)量的消息處理器颁井。
批處理作業(yè)可以被流程圖中的批處理執(zhí)行器觸發(fā)或者由批處理作業(yè)中批處理輸入所定義的合規(guī)消息源觸發(fā)。觸發(fā)后蠢护,Mule會創(chuàng)建一個新的批處理作業(yè)實例雅宾。當所有的記錄都通過了全部的批處理步驟后,實例銷毀葵硕∶继В可以按需將包含了記錄處理成敗的處理結果進行匯總贯吓。
更多關于批處理的內容
更多內容
下一步:了解Mule流程圖中的元素