我有一个问题,不知道如何使用 camel 解决它。在camel文档中搜索了相关的EIP,没有结果。
现在我有了简单的路线:
<route id="routeId">
<from uri="Source1"/>
<from uri="Source2"/>
<to uri="Destination"/>
</route>
两个源都将 JMS 消息发送到 Destination,并且在某个时刻,当 Source 完成其工作时,它会发送带有一些标志的特定结束消息。我需要做的是收集或计算这些结束消息,并在我从两个来源收到结束消息时将单个结束消息发送到目的地。只有当我收到两条结束消息(想象它只是带有一些 header 标志的简单消息)时,我才应该发送一条到目的地。
抱歉,如果问题解释不够清楚。
提前致谢。
最佳答案
Camel aggregator和 filter模式可用于这种情况...
- 使用过滤器检测“结束”消息并通过聚合器路由它们
- 使用自定义聚合策略来构建带有计数的单端消息
- 使用自定义完成谓词来触发完成消息
像这样的……
from("source1").to("direct:aggregateRoute");
from("source2").to("direct:aggregateRoute");
from("direct:aggregateRoute")
.filter(header("isEndMessage").isEqualTo("true"))
.aggregate(constant(true), new MyAggregationStrategy())
.completionPredicate(new MyCompletionStrategy())
.to("destination");
关于java - 多源特定消息聚合和重定向到目的地的 Camel 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25309350/