ChunkMessageChannelItemWriter 如何在 Spring Batch 远程分块中收集回复?
-
21-12-2019 - |
题
我正在尝试使用 spring 集成和 amqp (rabbitmq) 在 Spring Batch 中实现远程分块。
我无法理解 ChunkMessageChannelItemWriter 如何在下面的远程分块测试中收集回复
它是如何工作的 ?它是否发送一条消息,等待其回复,接收其回复,然后再次发送第二条消息,等待第二条消息回复并接收第二条消息回复,依此类推?
或者它异步发送所有消息并等待回复,然后在回复到达回复通道时接收回复?
如果我们在这里参考远程分块文档
它使用入站和出站适配器。如果 ChunkMessageChannelItemWriter 收到回复,为什么我们需要适配器?在从机端为什么同时使用适配器和服务激活器?
任何人都可以帮助我理解它是如何工作的,因为从文档中很难理解它。
解决方案
这只是一个测试用例 - 一切都在本地运行 - 看看 JMS测试用例 举一个更真实的例子。通道项编写器使用出站通道适配器将所有块发送到 JMS。
远程端(jms 侦听器容器)接收块、处理它们并将回复发送到 replies
队列。
每次调用 writer 来写入一个块时,它都会检查回复并在必要时(如果超出了限制)则暂停。
当所有块都被写入时, afterStep()
, ,它等待其余结果。
这一切与本地测试用例的工作原理相同,因为块处理程序将回复写入队列通道。
不隶属于 StackOverflow