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

问题描述 投票:0回答:1

在 Camel 路线中,我使用分离器来生成多个子路线。每一条路由都会使用一些外部 API 来完成一些工作,并轮询直到工作完成。我就这么远了

现在我需要触发最后一个操作来收集所有这些路由的结果。我该怎么做?

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

apache-camel
1个回答
0
投票

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

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

使用 Java DSL 的示例:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.