タスク エグゼキューターで構成されたパブリッシュ/サブスクライブ チャネルが与えられた場合、例外がスローされた場合に、順序付けられたサブスクライバーの呼び出しが中断される可能性はありますか?
たとえば、この例では、「worked」メッセージは、シーケンス内の 2 番目のサービス アクティベーターによって引き続き送信されます。私はこれが起こらないことを望みます。
<int:publish-subscribe-channel id="input" task-executor="taskExecutor" />
<int:service-activator
input-channel="input"
order="1"
expression="1 / 0"
output-channel="nullChannel"
/>
<int:service-activator
input-channel="input"
order="2"
expression="'worked'"
output-channel="output"
/>
<int:channel id="output">
<int:queue />
</int:channel>
File
これの実際の使用例は、aが 2 つのサブスクライバーに発行され、1 つはコンテンツの解析用で、もう 1 つは S3 へのアーカイブ用であるという点で、やや複雑です。シーケンスが適用されるため、両方のタスクが完了したら、後で集約して削除できます。
S3 アップロードは、応答を返さないアウトバウンド チャネル アダプターで実現されます。order
そのため、最初に S3 アダプターを (属性を使用して) 呼び出してからブリッジに送信するパブリッシュ/サブスクライブ チャネルがありFile
、ブリッジはそれを、集約されたメッセージを収集するチャネルに配置します。
S3 アップロードが失敗した場合、ファイルを削除したくないので、アップストリーム チャネルの 2 番目のサブスクライバーを呼び出してはなりません。