spring integration消息聚合器超时和异步聚合澄清

时间:2016-09-26 11:37:04

标签: spring-integration

我们在spring集成应用程序中使用聚合器。我们使用服务激活器异步处理3个不同服务的超过100万个产品,其中poller已经提供了ThreadPoolExector。

现在发生的事情是,当说3个线程正在处理相同的产品(用于检查三个服务的商业逻辑以获得最佳价格)时,所有这三个线程都要等到聚合完成。现在我们每个服务都有超时,所以我们在这里很好。但我认为这会影响系统的吞吐量,因为线程池中的线程必须等待聚合完成,因为它们通过直接通道将消息传递给聚合器。

现在我想把这个频道作为基于队列的频道,这样我就可以对聚合响应进行异步调用。

如果我这样做,那么我几乎没有问题

  1. 特定消息组上的计时器何时启动?
  2. 为聚合器轮询器提供多个线程以通过多个线程进行聚合是一个好的设计吗?如果是,则分组如何适用于每条消息?

1 个答案:

答案 0 :(得分:2)

当最后一条消息插入组时,计时器开始。

是的,聚合器是线程安全的 - 但是一次只有一个线程可以操作特定组(由关联策略标识)。它使用锁来防止多个线程同时更新同一个组。