我需要向3个服务发送消息,并在结束时汇总结果
这很容易通过publish-subscribe-channel->service-activator(s)->aggregator
。
当其中一项服务实际上是对其他服务的2次调用时,会出现问题。此时我想引入额外的publish-subscribe-channel
和聚合器。
E.g。
publish-subscribe-channel1 -> service-activator group1 -> aggregator1
\/-> service call -> publish-subscribe-channel2 -> service-activator group2 -> aggregator2
因此aggregator2
不会对邮件进行分组(逐个发送)。
Aggregator1
从aggregator2
获取结果并发送消息,而不等待来自服务激活器组1的消息。
有什么建议吗?
答案 0 :(得分:0)
您的所有publish-subscribe-channel
都应该apply-sequence="true"
。当然,如果您不使用自定义correlation
和release
策略。
使用apply-sequence="true"
框架填充标准correlation
MessageHeaders
,它们存储在Stack
中:嵌套聚合器处理其范围的correlation
并且从堆栈中弹出它们以便为外部聚合做好准备。
嵌套的aggregator
应将其结果发送到外部aggregator
的输入通道。
对于最后一个,它看起来只是服务的结果。