アノテーション付きのルーターの構成
@Router
を使用してメソッドにアノテーションを付ける場合、メソッドは MessageChannel
または String
型のいずれかを返す場合があります。後者の場合、エンドポイントはデフォルトの出力チャネルの場合と同様にチャネル名を解決します。さらに、メソッドは単一の値またはコレクションを返す場合があります。コレクションが返される場合、応答メッセージは複数のチャネルに送信されます。要約すると、次のメソッドシグネチャーはすべて有効です。
@Router
public MessageChannel route(Message message) {...}
@Router
public List<MessageChannel> route(Message message) {...}
@Router
public String route(Foo payload) {...}
@Router
public List<String> route(Foo payload) {...}
ペイロードベースのルーティングに加えて、メッセージヘッダー内でプロパティまたは属性として使用可能なメタデータに基づいてメッセージをルーティングできます。この場合、@Router
アノテーションが付けられたメソッドには、@Header
アノテーションが付けられたパラメーターが含まれる場合があります。これは、次の例に示すようにヘッダー値にマッピングされ、アノテーションサポートにドキュメント化されます。
@Router
public List<String> route(@Header("orderStatus") OrderStatus status)
XPath サポートを含む XML ベースのメッセージのルーティングについては、XML サポート - XML ペイロードの処理を参照してください。 |
ルーター構成の詳細については、Java DSL の章のメッセージルーターも参照してください。