概要

ルーターは、多くのメッセージングアーキテクチャで重要な要素です。メッセージチャネルからメッセージを消費し、一連の条件に応じて、消費した各メッセージを 1 つ以上の異なるメッセージチャネルに転送します。

Spring Integration は、次のルーターを提供します。

ルーターの実装は、多くの構成パラメーターを共有します。ただし、ルーター間には特定の違いがあります。さらに、構成パラメーターの可用性は、ルーターが チェーンの内部で使用されているか外部で使用されているかによって異なります。概要を簡単に説明するために、使用可能なすべての属性を次の 2 つの表に示します。

次の表は、チェーンの外部にあるルーターで使用できる構成パラメーターを示しています。

表 1: チェーン外のルーター
属性 ルーター ヘッダー値ルーター xpath ルーター ペイロード型ルーター 受信者リストルート 例外型ルーター

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: チェーン内のルーター
属性 ルーター ヘッダー値ルーター xpath ルーター ペイロード型ルーター 受信者リストルーター 例外型ルーター

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 以降、動作を resolution-required 属性と統合するために、ignore-channel-name-resolution-failures 属性が削除されました。また、resolution-required 属性のデフォルトは true になりました。

これらの変更の前は、resolution-required 属性はデフォルトで false に設定されていたため、チャネルが解決されず、default-output-channel が設定されていない場合、メッセージが静かにドロップされました。新しい動作には少なくとも 1 つの解決されたチャネルが必要であり、デフォルトでは、チャネルが決定されなかった場合(または送信の試行が成功しなかった場合) MessageDeliveryException をスローします。

メッセージを静かにドロップしたい場合は、default-output-channel="nullChannel" を設定できます。