Overview

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

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"