共通のルーターパラメーター

このセクションでは、すべてのルーターパラメーターに共通のパラメーターについて説明します(この章で前述した 2 つの表で、すべてのボックスがチェックされているパラメーター)。

チェーンの内側と外側

以下のパラメーターは、チェーンの内部および外部のすべてのルーターに有効です。

apply-sequence

この属性は、シーケンス番号とサイズのヘッダーを各メッセージに追加するかどうかを指定します。このオプション属性のデフォルトは false です。

default-output-channel

設定されている場合、この属性は、チャネルの解決に失敗した場合にメッセージが送信されるチャネルへの参照を提供します。デフォルトの出力チャネルが提供されていない場合、ルーターは例外をスローします。代わりにこれらのメッセージをサイレントドロップする場合は、デフォルトの出力チャネル属性値を nullChannel に設定します。

バージョン 6.0 以降、デフォルトの出力チャネルを設定すると、channelKeyFallback オプションも false にリセットされます。そのため、名前からチャネルを解決しようとする試みは行われず、Java switch ステートメントと同様に、このデフォルトの出力チャネルにフォールバックします。channelKeyFallback が明示的に true に設定されている場合、以降のロジックは resolutionRequired オプションに依存します: キーからの未解決チャネルへのメッセージは、resolutionRequired が false である場合にのみ defaultOutputChannel に到達できます。defaultOutputChannel が提供され、channelKeyFallback と resolutionRequired の両方が true に設定されている構成は、AbstractMappingMessageRouter 初期化フェーズによって拒否されます。
resolution-required

この属性は、チャネル名が常に存在するチャネルインスタンスに正常に解決される必要があるかどうかを指定します。true に設定すると、チャネルを解決できないときに MessagingException が発生します。この属性を false に設定すると、解決できないチャネルはすべて無視されます。このオプション属性のデフォルトは true です。

resolution-required が false であり、チャネルが解決されない場合、指定されている場合、メッセージは default-output-channel のみに送信されます。
ignore-send-failures

true に設定されている場合、メッセージチャネルへの送信の失敗は無視されます。false に設定すると、代わりに MessageDeliveryException がスローされ、ルーターが複数のチャネルを解決した場合、後続のチャネルはメッセージを受信しません。

この属性の正確な動作は、メッセージが送信される Channel の型によって異なります。例: 直接チャネル(シングルスレッド)を使用している場合、送信エラーは、さらに下流のコンポーネントによってスローされた例外によって発生する可能性があります。ただし、メッセージを単純なキューチャネル(非同期)に送信する場合、例外がスローされる可能性はむしろリモートです。

ほとんどのルーターは単一のチャネルにルーティングしますが、複数のチャネル名を返すことができます。たとえば、recipient-list-router はまさにそれを行います。単一のチャネルにのみルーティングするルーターでこの属性を true に設定すると、発生した例外はすべて飲み込まれますが、これは通常ほとんど意味がありません。その場合は、フローエントリポイントでエラーフローの例外をキャッチすることをお勧めします。ignore-send-failures 属性を true に設定すると、通常、ルーター実装が複数のチャネル名を返す場合に意味があります。失敗したチャネルに続く他のチャネルがメッセージを受信するためです。

この属性のデフォルトは false です。

timeout

timeout 属性は、ターゲットのメッセージチャネルにメッセージを送信するときに待機する最大時間をミリ秒単位で指定します。

トップレベル (チェーンの外側)

以下のパラメーターは、チェーンの外部にあるすべての最上位ルーターでのみ有効です。

id

基礎となる Spring Bean 定義を識別します。これは、ルーターの場合、それぞれ EventDrivenConsumer または PollingConsumer のインスタンスであり、ルーターの input-channel がそれぞれ SubscribableChannel か PollableChannel かによって異なります。これはオプションの属性です。

auto-startup

この「ライフサイクル」属性は、アプリケーションコンテキストの起動中にこのコンポーネントを起動する必要があるかどうかを示します。このオプション属性のデフォルトは true です。

input-channel

このエンドポイントの受信メッセージチャネル。

order

この属性は、このエンドポイントがチャンネルのサブスクライバーとして接続されている場合の呼び出しの順序を定義します。これは、そのチャネルがフェイルオーバーディスパッチ戦略を使用する場合に特に関連します。このエンドポイント自体がキューのあるチャネルのポーリングコンシューマーである場合、効果はありません。