我需要向3个服务发送消息,并在最后汇总结果。
这很容易通过publish-subscribe-channel->service-activator(s)->aggregator
。
当其中一个服务实际上是对其他服务的2个调用时,就会出现此问题。在这一点上,我想介绍额外的publish-subscribe-channel
和聚合器。
例如
publish-subscribe-channel1 -> service-activator group1 -> aggregator1
\/-> service call -> publish-subscribe-channel2 -> service-activator group2 -> aggregator2
结果aggregator2
是不对消息进行分组(将消息一一发送)。
Aggregator1
从中获取结果aggregator2
并发送消息,而无需等待服务激活器组1发出的消息。
有什么建议?
你所有的publish-subscribe-channel
都应该拥有apply-sequence="true"
。当然,如果您不使用自定义correlation
和release
策略。
使用apply-sequence="true"
框架填充标准correlation
MessageHeaders
并将它们存储在中Stack
:嵌套的聚合器处理correlation
其作用域,然后将其从堆栈中弹出以准备进行外部聚合。
并且嵌套aggregator
应将其结果发送到external的输入通道aggregator
。对于最后一个,它看起来就像是服务的结果。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句