共通のルーターパラメーター
このセクションでは、すべてのルーターパラメーターに共通のパラメーターについて説明します(この章で前述した 2 つの表で、すべてのボックスがチェックされているパラメーター)。
チェーンの内側と外側
以下のパラメーターは、チェーンの内部および外部のすべてのルーターに有効です。
apply-sequence
この属性は、シーケンス番号とサイズのヘッダーを各メッセージに追加するかどうかを指定します。このオプション属性のデフォルトは
false
です。default-output-channel
設定されている場合、この属性は、チャネルの解決に失敗した場合にメッセージが送信されるチャネルへの参照を提供します。デフォルトの出力チャネルが提供されていない場合、ルーターは例外をスローします。代わりにこれらのメッセージをサイレントドロップする場合は、デフォルトの出力チャネル属性値を
nullChannel
に設定します。バージョン 6.0 以降、デフォルトの出力チャネルを設定すると、 channelKeyFallback
オプションもfalse
にリセットされます。そのため、名前からチャネルを解決しようとする試みは行われず、Javaswitch
ステートメントと同様に、このデフォルトの出力チャネルにフォールバックします。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
この属性は、このエンドポイントがチャンネルのサブスクライバーとして接続されている場合の呼び出しの順序を定義します。これは、そのチャネルがフェイルオーバーディスパッチ戦略を使用する場合に特に関連します。このエンドポイント自体がキューのあるチャネルのポーリングコンシューマーである場合、効果はありません。