提问者:小点点

ActiveMQ / Camel:生成多条路线,等待所有路线完成


我是 activeMQ / Camel 的新手,所以请耐心等待。

在骆驼路线中,我使用拆分器生成多个子路线。此路由中的每一个都将使用一些外部 API 来执行某些工作,并轮询直到作业完成。我有那么远。

现在,我需要触发最后一个操作来收集所有这些路由的结果。我将如何以骆驼/AMQ的方式做到这一点?

我正在考虑在每个子路由中将一条消息发布到 AMQ 队列,但我还没有找到一种方法来等待该队列中收到 N 条消息,然后再在我的最终 Camel 路由中使用它。

谢谢。


共1个答案

匿名用户

如果您需要从拆分器子路由收集所有结果,并在所有子路由完成后对这些结果执行一些操作,则可以在拆分器上使用聚合策略 (https://camel.apache.org/manual/latest/aggregate-eip.html)。

通过使用聚合策略,拆分后的 Exchange 将包含所有子路由的结果。

使用 Java DSL 的示例:

.split(expression, new GroupedExchangeAggregationStrategy())
   ...
.end()

GroupedExchangeAggregationStrategy将所有拆分的交易所聚合到一个列表中。如果需要,您可以使用另一个预定义的聚合策略,也可以通过扩展 org.apache.camel.processor.aggregate.AggregationStrategy 来创建自定义策略。