概覽

路由器是許多訊息架構中的關鍵元素。它們從訊息通道消費訊息,並根據一組條件將每條消費的訊息轉發到一個或多個不同的訊息通道。

Spring Integration 提供了以下路由器:

路由器實現共享許多配置引數。然而,路由器之間存在某些差異。此外,配置引數的可用性取決於路由器是在鏈內部還是外部使用。為了提供快速概述,所有可用屬性都列在以下兩個表格中。

下表顯示了鏈外路由器可用的配置引數

表 1. 鏈外路由器
屬性 路由器 訊息頭值路由器 XPath 路由器 負載型別路由器 收件人列表路由器 異常型別路由器

apply-sequence

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

預設輸出通道

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

需要解析

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

忽略傳送失敗

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

超時

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

id

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

auto-startup

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

輸入通道

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

命令

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

method

tickmark

引用

tickmark

表示式

tickmark

訊息頭名稱

tickmark

評估為字串

tickmark

XPath 表示式引用

tickmark

轉換器

tickmark

下表顯示了鏈內路由器可用的配置引數

表 2. 鏈內路由器
屬性 路由器 訊息頭值路由器 XPath 路由器 負載型別路由器 收件人列表路由器 異常型別路由器

apply-sequence

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

預設輸出通道

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

需要解析

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

忽略傳送失敗

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

超時

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

id

auto-startup

輸入通道

命令

method

tickmark

引用

tickmark

表示式

tickmark

訊息頭名稱

tickmark

評估為字串

tickmark

XPath 表示式引用

tickmark

轉換器

tickmark

自 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"`。

© . This site is unofficial and not affiliated with VMware.