概覽

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

Spring Integration 提供了以下路由器:

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

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

表 1. 鏈外部路由器
屬性 router header value router xpath router payload type router recipient list route exception type router

apply-sequence

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

default-output-channel

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

resolution-required

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

ignore-send-failures

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

timeout

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

id

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

auto-startup

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

input-channel

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

order

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

method

tickmark

ref

tickmark

expression

tickmark

header-name

tickmark

evaluate-as-string

tickmark

xpath-expression-ref

tickmark

converter

tickmark

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

表 2. 鏈內部路由器
屬性 router header value router xpath router payload type router recipient list router exception type router

apply-sequence

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

default-output-channel

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

resolution-required

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

ignore-send-failures

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

timeout

tickmark
tickmark
tickmark
tickmark
tickmark
tickmark

id

auto-startup

input-channel

order

method

tickmark

ref

tickmark

expression

tickmark

header-name

tickmark

evaluate-as-string

tickmark

xpath-expression-ref

tickmark

converter

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