是否可以在spring集成中将一个主记录的子记录发送到jms支持的队列中的多个从属并在主节点中聚合它们的响应,并且一旦所有子进程在db中进行更新?
答案 0 :(得分:0)
通常不建议使用jms支持的渠道将工作分配给其他实例;请改用通道适配器。 JMS支持的渠道实际上是持久性的,而不是分发。
在分割器之后放置一个jms出站通道适配器。
主
... ->splitter->jms:outbound-channel-adapter
jms:message-driven-channel-adapter->aggregator-> ...
从站
jms:message-driven-channel-adapter-> ... ->jms:outbound-channel-adapter
如果您想将聚合器的回复路由回原始呼叫者,则需要保留replyChannel
- 因为它们是活动对象,所以它们不会在序列化中存活,因此您需要使用header enricher upstream of the splitter, to add the reply channel to the channel registry并将回复通道作为字符串通过JMS传送。
您还需要添加一个标题来告诉从属服务器将结果发送到哪个目的地名称;你可以在相同的标题更丰富的情况下做到这一点。在从属端,在出站适配器上使用destination-expresssion
。