java - 多源特定消息聚合和重定向到目的地的 Camel 模式

标签 java apache-camel eip

我有一个问题,不知道如何使用 camel 解决它。在camel文档中搜索了相关的EIP,没有结果。

现在我有了简单的路线:

<route id="routeId">
    <from uri="Source1"/>
    <from uri="Source2"/>
    <to   uri="Destination"/>
</route>

两个源都将 JMS 消息发送到 Destination,并且在某个时刻,当 Source 完成其工作时,它会发送带有一些标志的特定结束消息。我需要做的是收集或计算这些结束消息,并在我从两个来源收到结束消息时将单个结束消息发送到目的地。只有当我收到两条结束消息(想象它只是带有一些 header 标志的简单消息)时,我才应该发送一条到目的地。

抱歉,如果问题解释不够清楚。

提前致谢。

最佳答案

Camel aggregatorfilter模式可用于这种情况...

  • 使用过滤器检测“结束”消息并通过聚合器路由它们
  • 使用自定义聚合策略来构建带有计数的单端消息
  • 使用自定义完成谓词来触发完成消息

像这样的……

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/

相关文章:

Python 为 Blur.io 签署 EIP-712 消息

C# 堆栈溢出覆盖 EIP

Java 检测用户何时关闭笔记本电脑屏幕?

java - 在数组中搜索一个值,如果不存在则存储它

jms - Camel jms 到外部 activeMQ 的请求-回复给出 javax.jms.InvalidDestinationException : Cannot publish to a deleted Destination:

spring-boot - 集成测试 camel-spring-boot 路由

c++ - 正确的方法将程序集中的寄存器值从一个位置移动到另一个位置

java - 根据类型可以有 2 或 3 个字段的对象的良好实现

java - Spring Roo 的替代用法

java - Camel Kafka 2.14.3版本无法读取消息