我可以在一个Spring Integration流程中使用2个聚合器吗?

时间:2014-04-10 10:49:03

标签: java aggregate spring-integration

我需要向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不会对邮件进行分组(逐个发送)。

Aggregator1aggregator2获取结果并发送消息,而不等待来自服务激活器组1的消息。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您的所有publish-subscribe-channel都应该apply-sequence="true"。当然,如果您不使用自定义correlationrelease策略。

使用apply-sequence="true"框架填充标准correlation MessageHeaders,它们存储在Stack中:嵌套聚合器处理其范围的correlation并且从堆栈中弹出它们以便为外部聚合做好准备。

嵌套的aggregator应将其结果发送到外部aggregator的输入通道。 对于最后一个,它看起来只是服务的结果。