アノテーションインターフェース Router
@TargetSE({METHODSE,ANNOTATION_TYPESE})
@RetentionSE(RUNTIMESE)
@DocumentedSE
@RepeatableSE(Routers.class)
public @interface Router
メッセージ、メッセージヘッダー、その両方に基づいて、メソッドがチャネルまたはチャネル名に解決できることを示します。
@Router アノテーションが付けられたメソッドは、型 Message
または予期されるメッセージペイロードの型のパラメーターを受け入れる場合があります。SimpleTypeConverter
でサポートされている型変換は、必要に応じてメッセージペイロードに適用されます。ヘッダー値は、@Header
パラメーターアノテーションを使用してメッセージパラメーターとして渡すこともできます。
アノテーション付きメソッドからの戻り値は、要素が channels
または文字列のいずれかであるコレクションまたは配列のいずれかです。後者の場合、このルーターをホストしているエンドポイントは、チャネルレジストリまたは channelMappings()
(提供されている場合)を使用して各チャネル名を解決しようとします。
- 作成者:
- Mark Fisher, Artem Bilan, Chris Bono
オプション要素の概要
オプション要素修飾子と型オプションの要素説明シーケンス番号とサイズのヘッダーを各メッセージに追加するかどうかを指定します。SmartLifecycle
autoStartup
オプション。StringSE[]
channelMapping エントリを表す「キー = 値」のペア。宛先チャネルが解決されず、resolutionRequired()
が false であるメッセージをこのルーターが送信するチャネルを指定します。true
に設定すると、メッセージチャネルへの送信の失敗は無視されます。このルーターがメッセージを消費するチャネルを指定します。SmartLifecycle
phase
オプションを指定します。解決前に各チャネル名に追加するプレフィックスを指定します。チャネル名を常に既存のチャネルインスタンスに正常に解決する必要があるかどうかを指定します。応答Message
をoutputChannel
に送信するときに待機する最大時間をミリ秒単位で指定します。解決前に各チャネル名に追加するサフィックスを指定します。
要素の詳細
inputChannel
StringSE inputChannelこのルーターがメッセージを消費するチャネルを指定します。チャネルが存在しない場合、この名前のDirectChannel
がアプリケーションコンテキストに登録されます。- 戻り値:
- チャンネル名。
- デフォルト:
""
defaultOutputChannel
StringSE defaultOutputChannel宛先チャネルが解決されず、resolutionRequired()
が false であるメッセージをこのルーターが送信するチャネルを指定します。- 戻り値:
- チャンネル名。
- デフォルト:
""
channelMappings
prefix
suffix
resolutionRequired
StringSE resolutionRequiredチャネル名を常に既存のチャネルインスタンスに正常に解決する必要があるかどうかを指定します。true
(デフォルト)に設定すると、チャネルを解決できない場合にMessagingException
が発生します。この属性をfalse
に設定すると、解決できないチャネルはすべて無視されます。「プロパティプレースホルダー」として指定できます。例:${spring.integration.resolutionRequired}
。- 戻り値:
- 解決が必要なフラグ。
- デフォルト:
""
applySequence
StringSE applySequenceシーケンス番号とサイズのヘッダーを各メッセージに追加するかどうかを指定します。デフォルトはfalse
です。「プロパティプレースホルダー」として指定できます。例:${spring.integration.applySequence}
。- 戻り値:
- シーケンスフラグを適用します。
- デフォルト:
""
ignoreSendFailures
StringSE ignoreSendFailurestrue
に設定すると、メッセージチャネルへの送信の失敗は無視されます。false
(デフォルト)に設定されている場合、代わりにMessageDeliveryException
がスローされ、ルーターが複数のチャネルを解決する場合、後続のチャネルはメッセージを受信しません。ダイレクトチャネル(シングルスレッド)を使用する場合、送信の失敗は、はるか下流のコンポーネントによってスローされる例外によって引き起こされる可能性があることに注意してください。「プロパティプレースホルダー」として指定できます。例:${spring.integration.ignoreSendFailures}
。- 戻り値:
- 送信失敗フラグを無視します。
- デフォルト:
""
sendTimeout
StringSE sendTimeout応答Message
をoutputChannel
に送信するときに待機する最大時間をミリ秒単位で指定します。デフォルトは30
秒です。出力チャネルに何らかの「送信」制限がある場合にのみ適用されます (例: 固定の「容量」を持つQueueChannel
)。この場合、MessageDeliveryException
がスローされます。AbstractSubscribableChannel
実装の場合、"sendTimeout" は無視されます。「プロパティプレースホルダー」として指定できます (例:${spring.integration.sendTimeout}
)。- 戻り値:
- 結果を応答ターゲットに送信するためのタイムアウト (ミリ秒単位)
- デフォルト:
""
autoStartup
phase
StringSE phaseSmartLifecycle
phase
オプションを指定します。デフォルトは、PollingConsumer
の場合はInteger.MAX_VALUE / 2
、EventDrivenConsumer
の場合はInteger.MIN_VALUE
です。「プロパティプレースホルダー」として指定できます。例:${foo.phase}
。- 戻り値:
SmartLifecycle
フェーズ。
- デフォルト:
""
poller
Poller poller- 戻り値:
- ポーリングされたエンドポイント (
PollerMetadata
) のPoller
オプション。reactive()
とは相互に排他的です。
- デフォルト:
@org.springframework.integration.annotation.Poller("\n\t\t\n\t\t\n\ue000\ue001\ue002\n\t\t\t\t\n")
reactive