概覽
路由器是許多訊息架構中的關鍵元素。它們從訊息通道消費訊息,並根據一組條件將每條消費的訊息轉發到一個或多個不同的訊息通道。
Spring Integration 提供了以下路由器:
路由器實現共享許多配置引數。然而,路由器之間存在某些差異。此外,配置引數的可用性取決於路由器是在鏈內部還是外部使用。為了提供快速概述,所有可用屬性都列在以下兩個表格中。
下表顯示了鏈外路由器可用的配置引數
| 屬性 | 路由器 | 訊息頭值路由器 | XPath 路由器 | 負載型別路由器 | 收件人列表路由器 | 異常型別路由器 |
|---|---|---|---|---|---|---|
apply-sequence |
|
|
|
|
|
|
預設輸出通道 |
|
|
|
|
|
|
需要解析 |
|
|
|
|
|
|
忽略傳送失敗 |
|
|
|
|
|
|
超時 |
|
|
|
|
|
|
id |
|
|
|
|
|
|
auto-startup |
|
|
|
|
|
|
輸入通道 |
|
|
|
|
|
|
命令 |
|
|
|
|
|
|
method |
|
|||||
引用 |
|
|||||
表示式 |
|
|||||
訊息頭名稱 |
|
|||||
評估為字串 |
|
|||||
XPath 表示式引用 |
|
|||||
轉換器 |
|
下表顯示了鏈內路由器可用的配置引數
| 屬性 | 路由器 | 訊息頭值路由器 | XPath 路由器 | 負載型別路由器 | 收件人列表路由器 | 異常型別路由器 |
|---|---|---|---|---|---|---|
apply-sequence |
|
|
|
|
|
|
預設輸出通道 |
|
|
|
|
|
|
需要解析 |
|
|
|
|
|
|
忽略傳送失敗 |
|
|
|
|
|
|
超時 |
|
|
|
|
|
|
id |
||||||
auto-startup |
||||||
輸入通道 |
||||||
命令 |
||||||
method |
|
|||||
引用 |
|
|||||
表示式 |
|
|||||
訊息頭名稱 |
|
|||||
評估為字串 |
|
|||||
XPath 表示式引用 |
|
|||||
轉換器 |
|
|
自 Spring Integration 2.1 起,路由器引數已在所有路由器實現中更加標準化。因此,一些微小的更改可能會破壞舊的基於 Spring Integration 的應用程式。 自 Spring Integration 2.1 起,`ignore-channel-name-resolution-failures` 屬性已移除,取而代之的是將其行為與 `resolution-required` 屬性合併。此外,`resolution-required` 屬性現在預設為 `true`。 在這些更改之前,`resolution-required` 屬性預設為 `false`,導致在未解析任何通道且未設定 `default-output-channel` 時,訊息會被悄悄丟棄。新行為要求至少有一個已解析的通道,並且預設情況下,如果未確定任何通道(或傳送嘗試不成功),則會丟擲 `MessageDeliveryException`。 如果您確實希望悄悄丟棄訊息,可以將 `default-output-channel="nullChannel"`。 |