1

春の統合とamqp(rabbitmq)を使用して、春のバッチでリモートチャンクを実装しようとしています。

ChunkMessageChannelItemWriter が以下のリモート チャンク テストで応答を収集する方法を理解できません

https://github.com/spring-projects/spring-batch/blob/master/spring-batch-integration/src/test/resources/org/springframework/batch/integration/chunk/RemoteChunkStepIntegrationTests-context.xml

それはどのように機能しますか?1 つのメッセージを送信し、その返信を待ち、その返信を受信し、次に 2 番目のメッセージを再度受信し、2 番目のメッセージの返信を待って、2 番目のメッセージの返信を受信する、というように?

または、すべてのメッセージを非同期に送信し、返信を待ってから、返信チャネルに到着したときに返信を受け取りますか?

ここでリモートチャンクのドキュメントを参照すると

http://docs.spring.io/spring-batch/reference/html/springBatchIntegration.html#asynchronous-processors

受信アダプターと送信アダプターを使用します。ChunkMessageChannelItemWriter が応答を受信した場合、なぜアダプタが必要なのですか? スレーブ側では、なぜアダプターとサービスアクティベーターの両方が使用されるのですか?

ドキュメントから理解するのが難しいので、誰でもそれがどのように機能するかを理解するのを手伝ってくれますか?

4

1 に答える 1

1

これは単なるテスト ケースです。すべてがローカルで実行されます。より現実的な例については、 JMS テスト ケースを参照してください。チャネル アイテム ライターは、送信チャネル アダプターを使用して、すべてのチャンクを JMS に送信します。

リモート側 (jms リスナー コンテナー) は、チャンクを受信して​​処理し、応答をrepliesキューに送信します。

チャンクを書き込むためにライターが呼び出されるたびに、ライターは応答をチェックし、必要に応じて、スロットル制限を超えた場合は中断します。

すべてのチャンクが書き込まれると、 でafterStep()残りの結果を待ちます。

チャンク ハンドラーが応答をキュー チャネルに書き込むため、これはすべてローカル テスト ケースで同じように機能します。

于 2014-06-04T13:06:10.627 に答える