MuleSoft - 訊息處理器和指令碼元件



指令碼模組允許使用者在 Mule 中使用指令碼語言。簡單來說,指令碼模組可以交換用指令碼語言編寫的自定義邏輯。指令碼可以用作實現或轉換器。它們可以用於表示式求值,即用於控制訊息路由。

Mule 支援以下指令碼語言:

  • Groovy
  • Python
  • JavaScript
  • Ruby

如何安裝指令碼模組?

實際上,Anypoint Studio 自帶指令碼模組。如果在 Mule 調色盤中找不到該模組,則可以使用 **+新增模組** 新增。新增後,我們可以在 Mule 應用程式中使用指令碼模組操作。

實現示例

如前所述,我們需要將模組拖放到畫布中以建立工作區並在我們的應用程式中使用它。以下是一個示例:

Install Scripting Modules

我們已經知道如何配置 HTTP Listener 元件;因此,我們將討論配置指令碼模組。我們需要按照以下步驟配置指令碼模組:

步驟 1

從 Mule 調色盤中搜索指令碼模組,並將指令碼模組的 **EXECUTE** 操作拖到您的流程中,如上所示。

步驟 2

現在,透過雙擊開啟 Execute 配置選項卡。

步驟 3

在 **常規** 選項卡下,我們需要在 **程式碼文字視窗** 中提供如下所示的程式碼:

Code Text Window

步驟 4

最後,我們需要從 execute 元件中選擇 **引擎**。引擎列表如下:

  • Groovy
  • Nashorn (JavaScript)
  • jython (Python)
  • jRuby (Ruby)

上述執行示例在配置 XML 編輯器中的 XML 如下:

<scripting:execute engine="jython" doc:name = "Script">
   <scripting:code>
      def factorial(n):
         if n == 0: return 1
      return n * factorial(n-1)
      result = factorial(10)
   </scripting:code>
</scripting:execute>

訊息源

Mule 4 的訊息模型比 Mule 3 簡化,從而更容易以一致的方式處理聯結器中的資料,而不會覆蓋資訊。在 Mule 4 訊息模型中,每個 Mule 事件包含兩部分:**一條訊息及其關聯的變數**。

Mule 訊息包含有效負載及其屬性,其中屬性主要是元資料,例如檔案大小。

變數儲存任意使用者資訊,例如操作結果、輔助值等。

入站

Mule 3 中的入站屬性現在成為 Mule 4 中的屬性。眾所周知,入站屬性儲存透過訊息源獲得的有效負載的附加資訊,但在 Mule 4 中,這是透過屬性來完成的。屬性具有以下優點:

  • 藉助屬性,我們可以輕鬆檢視可用的資料,因為屬性是強型別的。

  • 我們可以輕鬆訪問屬性中包含的資訊。

以下是 Mule 4 中典型訊息的示例:

Inbound

出站

Mule 3 中的出站屬性必須由 Mule 聯結器和傳輸顯式指定才能傳送附加資料。但在 Mule 4 中,可以使用 DataWeave 表示式分別設定每個屬性。它不會對主流程產生任何副作用。

例如,下面的 DataWeave 表示式將執行 HTTP 請求並生成標頭和查詢引數,而無需設定訊息屬性。這在以下程式碼中顯示:

<http:request path = "M_issue" config-ref="http" method = "GET">
   <http:headers>#[{'path':'input/issues-list.json'}]</http:headers>
   <http:query-params>#[{'provider':'memory-provider'}]</http:query-params>
</http:request>

訊息處理器

Mule 從訊息源接收訊息後,訊息處理器的任務就開始了。Mule 使用一個或多個訊息處理器來透過流程處理訊息。訊息處理器的主要任務是轉換、過濾、豐富和處理訊息,因為它透過 Mule 流程。

Mule 處理器的分類

以下是基於功能的 Mule 處理器類別:

  • **聯結器** - 這些訊息處理器傳送和接收資料。它們還透過標準協議或第三方 API 將資料插入外部資料來源。

  • **元件** - 這些訊息處理器本質上是靈活的,並執行用各種語言(如 Java、JavaScript、Groovy、Python 或 Ruby)實現的業務邏輯。

  • **過濾器** - 它們過濾訊息,並僅允許基於特定條件繼續在流程中處理特定訊息。

  • **路由器** - 此訊息處理器用於控制訊息流以進行路由、重新排序或拆分。

  • **作用域** - 它們基本上封裝程式碼片段,用於在流程內定義細粒度的行為。

  • **轉換器** - 轉換器的作用是轉換訊息有效負載型別和資料格式,以促進系統之間的通訊。

  • **業務事件** - 它們基本上捕獲與關鍵績效指標關聯的資料。

  • **異常策略** - 這些訊息處理器處理訊息處理過程中發生的任何型別的錯誤。

廣告
© . All rights reserved.