我正在寻找一种基于消息聚合的有条件处理消息的方法。我已经研究了很多方法来实现这一点,但似乎Apache Camel不支持它。我会解释这个场景,然后解释我尝试的解决方案。
我考虑做的事情:
Camel真的很棒,但有时确实很难确定要使用哪种设计模式;)
首先,您需要保留文件对象的副本,因为在达到阈值之前,您不知道是否要删除它们--基本上(至少)有两种方法可以做到这一点。
备选案文1
第一种方法是在exchange属性中使用列表
。无论您对exchange主体做什么,此属性都将一直存在。如果您查看GroupedExchangeAggregationStrategy
的源代码,它可以做到以下几点:
list = new ArrayList<Exchange>();
answer.setProperty(Exchange.GROUPED_EXCHANGE, list);
// ...
list.add(newExchange);
也可以在自己的exchange属性上手动执行相同的操作。在任何情况下,都可以像您所做的那样使用分组聚合策略。
通过GroupedExchangeAggregationStrategy聚合
以将单个文件保存在列表中筛选器(简单(“${body}<123”))
拆分器(简单(“${property.camelgroupedexchange}”))“展开”聚合
请让我知道,如果这是没有意义的,或者如果我误解了你的问题在任何方面。
我有一个简单的camel MINA服务器,使用JAVA DSL,我的运行方式与这里记录的示例类似: 独立运行骆驼并让它在JAVA中继续运行 MINA 2组件 我正在尝试创建一个托管在mina:tcp://localhost:9991(又名MyApp_B)的示例应用程序,该应用程序向托管在mina:tcp://localhost:9990(又名MyApp_A)的服务器发送一个非常简单的消息。 我想发
我有一个用例: 我需要定期阅读和汇总Kafka主题的信息,并发布到不同的主题。本地存储不是一个选项。这就是我计划解决这个问题的方式,欢迎提出任何改进建议 为了安排Kafka消息的聚合和发布,计划使用聚合器EIP的completionInterval选项。这是代码。 路线是:
我有两个jms消费者,每个都在不同的流中。我想使用另一个流来聚合这两条消息的消息。并且还需要保留相关ID,因为我需要分割有效负载并发送回消息。 我尝试将分散收集与两个入站 VM 一起使用,但收到以下错误: 由以下原因导致:组织.xml.sax.SAXParse 异常:cvc-complex-type.2.4.a:发现以元素“vm:入站终结点”开头的无效内容。“{”http://www.muleso
我有一个集合,其中的文档如下所示:
我试图开发以下过滤器与熊猫数据帧: 我有四列,,,和 如何将其作为聚合函数编写? 下面是一个编写效率低下的工作示例: 输出: