【问题标题】:How does ChunkMessageChannelItemWriter collect replies in spring batch remote chunking?ChunkMessageChannelItemWriter 如何在 spring 批量远程分块中收集回复?
【发布时间】:2014-07-24 20:52:56
【问题描述】:

我正在尝试使用 spring 集成和 amqp (rabbitmq) 在 Spring Batch 中实现远程分块。

我无法理解 ChunkMessageChannelItemWriter 如何在下面的远程分块测试中收集回复

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

它是如何工作的?它是否发送一条消息,等待其回复,接收其回复,然后再次发送第二条消息,等待第二条消息回复并接收第二条消息回复,依此类推?

或者它异步发送所有消息并等待回复,然后在回复到达回复通道时接收回复?

如果我们在这里参考远程分块文档

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

它使用入站和出站适配器。如果 ChunkMessageChannelItemWriter 收到回复,为什么我们需要适配器?在从机端,为什么同时使用适配器和服务激活器?

任何人都可以帮助我理解它是如何工作的,因为它很难从文档中理解。

【问题讨论】:

    标签: spring spring-batch spring-integration spring-amqp spring-batch-admin


    【解决方案1】:

    这只是一个测试用例 - 一切都在本地运行 - 查看 JMS test case 以获得更真实的示例。通道项编写器使用出站通道适配器将所有块发送到 JMS。

    远程端(jms 侦听器容器)接收块,处理它们并将回复发送到replies 队列。

    每次调用 writer 写入块时,它都会检查回复并在必要时挂起(如果超出限制)。

    当所有块都写完后,在afterStep(),它会等待剩下的结果。

    这一切都与本地测试用例相同,因为块处理程序将回复写入队列通道。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-17
      • 2023-02-10
      • 1970-01-01
      • 2017-12-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多