關鍵性概念

關鍵性概念

Mule官方原文鏈接

消息(Message)與事件(Event)

Mule的工作方式是通過對源自外部的事件進行響應來觸發(比如通過接受消息)。遵循了事件驅動構架(EDA- Event Driven Architecture)的概念。

  • 在最簡單的應用中,Mule應用通過若干個消息處理器來接受事件並將其作爲消息進行處理。

  • 消息處理器被安排在一個或多個流程圖中。

大型消息或者消息流可以通過拆分成記錄通過批處理作業進行處理,而不需要使用流程圖

理解基本的流程圖架構是理解Mule的關鍵。本質上,每個Mule流程圖包含了一系列的消息處理器消息源來接受和處理消息。外部的客戶端通過各種不同的通訊協議或方法來觸發消息源,例如JMS, HTTP, FTP, JDBC, 或文件。每種消息源會翻譯指定的通訊協議或方法並將源數據封裝爲標準的消息格式,然後將消息傳給流程圖中的消息處理器。也可以在流程圖中使用連接器來創建傳出連接,藉此請求外部的資源、服務或者其他的Mule應用。

Mule應用通常會包含多個流程圖,通過不同的方式結合在一起來來滿足特定的用戶系統集成需求。一個流程圖可以通過直接引用調用另一個流程圖,或者通過常用的通訊協議或方法進行調用,比如JMS, HTTP, FTP, 或文件。被調用的的流程圖可能在同一個Mule應用中,也可能是在身處網絡任意一角的另一個Mule應用中。

流程圖(Flow)

一個流程圖即一種結構,在其中你將若干個獨立的處理器連接起來,通過它們對消息來進行接受、處理以,並最終發送。你可以將許多個流程圖連接起來組成完整的應用,然後將其部署,可是部署到Mule服務器也可以其他應用服務器,或者部署到雲端。

在最簡單的應用中,流程圖即消息處理器的序列。進入流程圖的消息可能會通過各種各樣不同的處理器。下圖所示的,是Mule首先通過請求-相應模式下的傳入節點接收消息。然後將消息的內容轉換成新的格式。接着在一個組件中將消息按照業務邏輯進行處理之後,將處理後的消息通過消息源作爲響應返回。

image

通常在Anypoint Studio圖形界面裏,消息處理器都會有對應的圖標。可以作爲消息源,處理器或者組件進行呈現。同時又作爲XML元素,組成了Mule應用的XML文件。在Mule應用XML文件中的流程圖元素下的XML元素通常相應的會在圖形界面的流程圖中的適當位置顯示相應的圖標。

下面的例子所示的,是在Anypoint Studio的圖形編輯器中的一個簡單的流程圖。點擊XML Editor標籤可以切換到XML視圖來查看同一個Mule應用的XML內容。

image

消息源(Message Sources)

Mule對消息(也可稱作事件)進行處理,其傳入源頭可能是Mule的外部資源。舉例來說,消息可能源自下列事件之一:移動設備發送到請求來消耗資源,數據庫中的數據發生變更或者SaaS應用中新創建了一個客戶ID。

大多數的流程圖中的第一個處理器是用來接收新的消息並將他們放到處理的隊列中。消息源,如上例所示,是傳入的HTTP節點。它從一個或多個外部的源頭接收消息,觸發了流程圖的執行。Mule中的消息源通常是Anypoint連接器,是用來提供與特定外部資源的連接的元素。通常藉由標準協議(比如HTTP, FTP, SMTP)或者第三方API(Salesforce.com, Twitter, 或者 MongoDB)進行連接。

消息處理器(Message Processors)

Mule的消息處理器通過類別進行分組:

  • 格式轉換器(Transformer)
  • 組件(Component)
  • 過濾器(Filter)
  • 作用域(Scope)
  • 路由(Router)

Mule格式轉換器是節點間交換數據的關鍵,通過它們Mule將消息負載轉換成目標應用可以理解的格式。Mule也可對消息進行增強,使得在數據處理過程中可以獲取額外的數據並附加到消息之中。

Mule使用組件來實現特定業務的後臺處理,例如檢查客戶信息或者數據庫中的庫存信息。組件將消息路由到正確的應用,例如後臺訂單系統。Mule使用分階段式的事件驅動架構(SEDA : Staged Event-Driven Architecture)進行流程圖的多核異步消息處理。重點在於,組件本身並不需要含有Mule相關的功能代碼。組件可以是POJO,Spring bean,Java bean,Groovy腳本。可以是包含了業務邏輯的處理數據的各種Web服務。甚至可以用其他語言實現:Python, JavaScript, Ruby和PHP。Mule的流程圖元素庫支持大部分常見的企業系統集成模式。

另外流程圖也可以包含過濾器作用域以及路由。譬如,你可以使用過濾器在應用收到的消息中進行IP地址白名單過濾。你可以用作用域將若干消息處理器包裹起來,然後將處理的結果緩存起來。你可以根據消息負載中的內容來將消息分發往不同的接收者。Mule有一系列的過濾器,作用域以及路由來幫助你自由的定義流程圖來靈活的處理消息。

在流程圖中佈置消息處理器的過程中,你可以結合Mule表達式(MEL – Mule Expression Language)靈活的從消息及系統運行環境中提取信息,並根據這些信息來驅動Mule的處理邏輯。

Mule表達式(Mule Expression Language)

Mule表達式(MEL)主要用來在Mule中獲取、操縱及使用取自Mule消息或系統運行環境中的信息。

在Mule應用運行過程中,可在以下的場合利用表達式:

  • 取得可用來處理當前消息的信息

  • 設置或操作消息頭或消息負載中的值

  • 對於消息、應用、Mule實例或服務器中的信息進行操作

    #[message.inboundProperties.propertyName]

更多關於MEL的內容:

Mule Expression Language

Mule Expression Language Basic Syntax

批處理 (Batch Processing)

除了流程圖之外,Anypoint Studio還支持批處理作業。批處理作業的功能是:將消息分割成獨立的更小單位的記錄,對每條記錄進行處理。在處理後將處理結果生成報告,根據需要將處理過的內容輸出到其他的系統或隊列中去。批處理作業適用於流式輸入,以及“接近實時”的SaaS應用間數據集成。

批處理作業是Mule應用中比流程圖更高層級的頂層元素,爲Mule消息處理提供記錄級的I/O。批處理將大數據消息分割成小單位記錄集來進行異步處理。與流程圖處理消息的機制相類似,批處理對記錄進行處理。

image

批處理作業包含了一個或多個批處理步驟,按順序對流過的記錄進行處理。每個步驟中可以包含任意數量的消息處理器。

批處理作業可以被流程圖中的批處理執行器觸發或者由批處理作業中批處理輸入所定義的合規消息源觸發。觸發後,Mule會創建一個新的批處理作業實例。當所有的記錄都通過了全部的批處理步驟後,實例銷燬。可以按需將包含了記錄處理成敗的處理結果進行彙總。

更多關於批處理的內容

更多內容

下一步:瞭解Mule流程圖中的元素

關於批處理作業

 



作者:麥克斯杜
鏈接:https://www.jianshu.com/p/a7c67fece1d9
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章