我们在spring集成应用程序中使用聚合器。我们使用服务激活器异步处理3个不同服务的超过100万个产品,其中poller已经提供了ThreadPoolExector。
现在发生的事情是,当说3个线程正在处理相同的产品(用于检查三个服务的商业逻辑以获得最佳价格)时,所有这三个线程都要等到聚合完成。现在我们每个服务都有超时,所以我们在这里很好。但我认为这会影响系统的吞吐量,因为线程池中的线程必须等待聚合完成,因为它们通过直接通道将消息传递给聚合器。
现在我想把这个频道作为基于队列的频道,这样我就可以对聚合响应进行异步调用。
如果我这样做,那么我几乎没有问题
答案 0 :(得分:2)
当最后一条消息插入组时,计时器开始。
是的,聚合器是线程安全的 - 但是一次只有一个线程可以操作特定组(由关联策略标识)。它使用锁来防止多个线程同时更新同一个组。