在 Camel 路线中,我使用分离器来生成多个子路线。每一条路由都会使用一些外部 API 来完成一些工作,并轮询直到工作完成。我就这么远了
现在我需要触发最后一个操作来收集所有这些路由的结果。我该怎么做?
我正在考虑在每个子路由中将消息发布到 JMS 队列,但我还没有找到一种方法来等待该队列中接收到 N 条消息,然后再在我的最终 Camel 路由中使用它。
如果您需要从拆分器子路由中收集所有结果,并在所有子路由完成后对这些结果执行某些操作,那么您可以使用聚合策略(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 创建自定义聚合策略。