- MuleSoft 教程
- MuleSoft - 首頁
- MuleSoft - Mule ESB 簡介
- MuleSoft - Mule 專案
- MuleSoft - Mule 在我們的機器中
- MuleSoft - Anypoint Studio
- MuleSoft - 探索 Anypoint Studio
- 建立第一個 Mule 應用程式
- MuleSoft - DataWeave 語言
- 訊息處理器和指令碼元件
- 核心元件及其配置
- MuleSoft - 端點
- 流控制和轉換器
- 使用 Anypoint Studio 的 Web 服務
- MuleSoft - Mule 錯誤處理
- MuleSoft - Mule 異常處理
- MuleSoft - 使用 MUnit 進行測試
- MuleSoft 有用資源
- MuleSoft - 快速指南
- MuleSoft - 有用資源
- MuleSoft - 討論
MuleSoft - 流控制和轉換器
流控制(路由器)
流控制組件的主要任務是接收輸入的 Mule 事件並將其路由到一個或多個獨立的元件序列。它基本上是將輸入的 Mule 事件路由到其他元件序列。因此,它也被稱為路由器。選擇和散佈-收集路由器是流控制組件下最常用的路由器。
選擇路由器
顧名思義,此路由器應用 DataWeave 邏輯來選擇兩個或多個路由之一。如前所述,每個路由都是 Mule 事件處理器的獨立序列。我們可以將選擇路由器定義為根據用於評估訊息內容的一組 DataWeave 表示式動態路由訊息流的路由器。
選擇路由器的示意圖
使用選擇路由器的效果就像在流中新增條件處理或大多數程式語言中的if/then/else程式碼塊。以下是具有三個選項的選擇路由器的示意圖。其中一個是預設路由器。
散佈-收集路由器
另一個最常用的路由事件處理器是散佈-收集元件。顧名思義,它基於散佈(複製)和收集(合併)的基本原理。我們可以透過以下兩點了解其工作原理:
首先,此路由器將 Mule 事件複製(散佈)到兩個或多個並行路由。條件是每個路由必須是一個或多個事件處理器的序列,就像一個子流一樣。在這種情況下,每個路由都將使用單獨的執行緒建立 Mule 事件。每個 Mule 事件都將擁有自己的有效負載、屬性以及變數。
接下來,此路由器從每個路由收集建立的 Mule 事件,然後將它們合併到一個新的 Mule 事件中。之後,它將此合併的 Mule 事件傳遞到下一個事件處理器。這裡的條件是,只有當每個路由都成功完成時,S-G 路由器才會將合併的 Mule 事件傳遞到下一個事件處理器。
散佈-收集路由器的示意圖
以下是具有四個事件處理器的散佈-收集路由器的示意圖。它並行執行每個路由,而不是順序執行。
散佈-收集路由器的錯誤處理
首先,我們必須瞭解在散佈-收集元件中可能生成的錯誤型別。任何錯誤都可能在事件處理器中生成,導致散佈-收集元件引發型別為Mule: COMPOSITE_ERROR的錯誤。此錯誤只有在每個路由失敗或完成之後才會由 S-G 元件引發。
為了處理此錯誤型別,可以在散佈-收集元件的每個路由中使用try 範圍。如果錯誤由try 範圍成功處理,則該路由肯定能夠生成 Mule 事件。
轉換器
假設如果我們想設定或刪除 Mule 事件的任何一部分,轉換器元件是最佳選擇。轉換器元件有以下型別:
刪除變數轉換器
顧名思義,此元件接收變數名稱並從 Mule 事件中刪除該變數。
配置刪除變數轉換器
下表顯示了在配置刪除變數轉換器時需要考慮的欄位名稱及其說明:
| 序號 | 欄位和說明 |
|---|---|
| 1 |
顯示名稱 (doc:name) 我們可以自定義它以在我們的 Mule 工作流中顯示此元件的唯一名稱。 |
| 2 | 名稱 (variableName) 它表示要刪除的變數的名稱。 |
設定有效負載轉換器
藉助set-payload元件,我們可以更新訊息的有效負載,該有效負載可以是字面字串或 DataWeave 表示式。不建議將此元件用於複雜的表示式或轉換。它可以用於簡單的選擇。
下表顯示了在配置設定有效負載轉換器時需要考慮的欄位名稱及其說明:
| 欄位 | 用法 | 解釋 |
|---|---|---|
| 值 (value) | 必填 | 值欄位是設定有效負載所必需的。它將接受字面字串或 DataWeave 表示式,定義如何設定有效負載。例如“some string” |
| MIME 型別 (mimeType) | 可選 | 它是可選的,但表示分配給訊息有效負載的值的 MIME 型別。例如 text/plain。 |
| 編碼 (encoding) | 可選 | 它也是可選的,但表示分配給訊息有效負載的值的編碼。例如 UTF-8。 |
我們可以透過 XML 配置程式碼設定有效負載:
使用靜態內容 - 以下 XML 配置程式碼將使用靜態內容設定有效負載:
<set-payload value = "{ 'name' : 'Gaurav', 'Id' : '2510' }"
mimeType = "application/json" encoding = "UTF-8"/>
使用表示式內容 - 以下 XML 配置程式碼將使用表示式內容設定有效負載:
<set-payload value = "#['Hi' ++ ' Today is ' ++ now()]"/>
以上示例將今天的日期附加到訊息有效負載“Hi”中。
設定變數轉換器
藉助set variable元件,我們可以建立或更新變數以儲存值,這些值可以是簡單的字面值(如字串、訊息有效負載或屬性物件),以便在 Mule 應用程式的流中使用。不建議將此元件用於複雜的表示式或轉換。它可以用於簡單的選擇。
配置設定變數轉換器
下表顯示了在配置設定有效負載轉換器時需要考慮的欄位名稱及其說明:
| 欄位 | 用法 | 解釋 |
|---|---|---|
| 變數名稱 (variableName) | 必填 | 它是必填欄位,表示變數的名稱。在提供名稱時,請遵循命名約定,例如它必須包含數字、字元和下劃線。 |
| 值 (value) | 必填 | 值欄位是設定變數所必需的。它將接受字面字串或 DataWeave 表示式。 |
| MIME 型別 (mimeType) | 可選 | 它是可選的,但表示變數的 MIME 型別。例如 text/plain。 |
| 編碼 (encoding) | 可選 | 它也是可選的,但表示變數的編碼。例如 ISO 10646/Unicode(UTF-8)。 |
示例
以下示例將變數設定為訊息有效負載:
Variable Name = msg_var Value = payload in Design center and #[payload] in Anypoint Studio
同樣,以下示例將變數設定為訊息有效負載:
Variable Name = msg_var Value = attributes in Design center and #[attributes] in Anypoint Studio.