共通のルーターパラメーター
このセクションでは、すべてのルーターパラメーターに共通のパラメーターについて説明します(この章で前述した 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-failurestrueに設定されている場合、メッセージチャネルへの送信の失敗は無視されます。falseに設定すると、代わりにMessageDeliveryExceptionがスローされ、ルーターが複数のチャネルを解決した場合、後続のチャネルはメッセージを受信しません。この属性の正確な動作は、メッセージが送信される
Channelの型によって異なります。例: 直接チャネル(シングルスレッド)を使用している場合、送信エラーは、さらに下流のコンポーネントによってスローされた例外によって発生する可能性があります。ただし、メッセージを単純なキューチャネル(非同期)に送信する場合、例外がスローされる可能性はむしろリモートです。ほとんどのルーターは単一のチャネルにルーティングしますが、複数のチャネル名を返すことができます。たとえば、 recipient-list-routerはまさにそれを行います。単一のチャネルにのみルーティングするルーターでこの属性をtrueに設定すると、発生した例外はすべて飲み込まれますが、これは通常ほとんど意味がありません。その場合は、フローエントリポイントでエラーフローの例外をキャッチすることをお勧めします。ignore-send-failures属性をtrueに設定すると、通常、ルーター実装が複数のチャネル名を返す場合に意味があります。失敗したチャネルに続く他のチャネルがメッセージを受信するためです。この属性のデフォルトは
falseです。timeouttimeout属性は、ターゲットのメッセージチャネルにメッセージを送信するときに待機する最大時間をミリ秒単位で指定します。
トップレベル (チェーンの外側)
以下のパラメーターは、チェーンの外部にあるすべての最上位ルーターでのみ有効です。
id基礎となる Spring Bean 定義を識別します。これは、ルーターの場合、それぞれ
EventDrivenConsumerまたはPollingConsumerのインスタンスであり、ルーターのinput-channelがそれぞれSubscribableChannelかPollableChannelかによって異なります。これはオプションの属性です。auto-startupこの「ライフサイクル」属性は、アプリケーションコンテキストの起動中にこのコンポーネントを起動する必要があるかどうかを示します。このオプション属性のデフォルトは
trueです。input-channelこのエンドポイントの受信メッセージチャネル。
orderこの属性は、このエンドポイントがチャンネルのサブスクライバーとして接続されている場合の呼び出しの順序を定義します。これは、そのチャネルがフェイルオーバーディスパッチ戦略を使用する場合に特に関連します。このエンドポイント自体がキューのあるチャネルのポーリングコンシューマーである場合、効果はありません。