通用路由器引數

本節描述了所有路由器引數通用的引數(本章前面所示的兩個表中所有框都被勾選的引數)。

鏈內和鏈外

以下引數適用於鏈內和鏈外的所有路由器。

apply-sequence

此屬性指定是否應將序列號和大小頭新增到每個訊息中。此可選屬性預設為 false

default-output-channel

如果設定,此屬性提供對當通道解析未能返回任何通道時訊息應傳送到的通道的引用。如果沒有提供預設輸出通道,路由器將丟擲異常。如果您希望靜默丟棄這些訊息,請將預設輸出通道屬性值設定為 nullChannel

從版本 6.0 開始,設定預設輸出通道還會將 channelKeyFallback 選項重置為 false。因此,將不會嘗試從其名稱解析通道,而是回退到此預設輸出通道 - 類似於 Java switch 語句。如果明確將 channelKeyFallback 設定為 true,則進一步的邏輯取決於 resolutionRequired 選項:只有當 resolutionRequiredfalse 時,來自鍵的未解析通道的訊息才能到達 defaultOutputChannel。因此,AbstractMappingMessageRouter 初始化階段會拒絕同時提供 defaultOutputChannel 並將 channelKeyFallbackresolutionRequired 都設定為 true 的配置。
resolution-required

此屬性指定通道名稱是否必須始終成功解析為存在的通道例項。如果設定為 true,當通道無法解析時將引發 MessagingException。將此屬性設定為 false 會導致任何無法解析的通道被忽略。此可選屬性預設為 true

只有當 resolution-requiredfalse 且通道未解析時,訊息才會傳送到 default-output-channel(如果已指定)。
ignore-send-failures

如果設定為 true,則傳送到訊息通道的失敗將被忽略。如果設定為 false,則會丟擲 MessageDeliveryException,並且如果路由器解析了多個通道,任何後續通道都不會接收到訊息。

此屬性的確切行為取決於訊息傳送到的 Channel 型別。例如,當使用直接通道(單執行緒)時,傳送失敗可能由下游元件丟擲的異常引起。然而,當訊息傳送到簡單佇列通道(非同步)時,丟擲異常的可能性非常小。

雖然大多數路由器路由到單個通道,但它們可以返回多個通道名稱。例如,recipient-list-router 就做到了這一點。如果您在只路由到單個通道的路由器上將此屬性設定為 true,則任何引發的異常都將被吞噬,這通常沒什麼意義。在這種情況下,最好在流程入口點的錯誤流中捕獲異常。因此,當路由器實現返回多個通道名稱時,將 ignore-send-failures 屬性設定為 true 通常更有意義,因為失敗的通道之後的其他通道仍會收到訊息。

此屬性預設為 false

超時

timeout 屬性指定向目標訊息通道傳送訊息時等待的最長時間(毫秒)。

頂層(鏈外)

以下引數僅適用於所有鏈外的頂層路由器。

id

標識底層的 Spring bean 定義,對於路由器,它是一個 EventDrivenConsumerPollingConsumer 例項,具體取決於路由器的 input-channelSubscribableChannel 還是 PollableChannel。這是一個可選屬性。

auto-startup

此“生命週期”屬性表示此元件是否應在應用程式上下文啟動期間啟動。此可選屬性預設為 true

input-channel

此端點的接收訊息通道。

命令

當此端點作為訂閱者連線到通道時,此屬性定義呼叫的順序。當該通道使用故障轉移分派策略時,這尤其相關。當此端點本身是帶有佇列的通道的輪詢消費者時,它沒有影響。

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