Spring Integrationコンポーネント(サービスアクティベーター)がファイルペイロードを含むメッセージを受け取り、出力を生成するようにしたい場合がいくつかあります。さらに、コンポーネントがこの出力を生成したら、元のファイルメッセージを別のチャネルに渡したいと思います。
ユースケースは、いくつかのファイルが入って来て、2つの並列処理ストリーム(S3へのアーカイブとコンテンツの解析)に送信されることです。Gary Russelのおかげapply-sequence="true"
で、元のファイルメッセージでパブリッシュ/サブスクライブチャネルの動作を使用しました。両方のストリームがファイルで終了したら、元の相関ヘッダーを含むファイルメッセージを「処理済み」チャネルに配置し、そこからアグリゲーターがそれらをグループ化し、両方が集約されたら、サービスアクティベーターにフィードするチャネルに配置します。ファイルを削除します。
したがって、要約すると、サービスアクティベータがその出力を1つのチャネルに配置すると同時に、受信した元のメッセージを別のチャネルに配置する必要があります。
アップデート
属性publish-subscribe
で指定された順序でシリアルに実行されているサブスクライバーと同期して使用する方がよいでしょうか?order