我想知道Camel是否提供了开箱即用的任何标准聚合策略。我一直在研究,但我只能在单元测试中找到一些。那些不能从实际代码中使用。我正在尝试将它与Apache Camel 2.12.1和Spring DSL一起使用。
特别是,我正在寻找this one:
public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
if (oldExchange == null) {
return newExchange;
}
String oldBody = oldExchange.getIn().getBody(String.class);
String newBody = newExchange.getIn().getBody(String.class);
oldExchange.getIn().setBody(oldBody + "+" + newBody);
return oldExchange;
}
如果它们没有包含在包中,是否有任何解决方案可以在Spring DSL中执行相同操作而无需在代码中创建AggregationStrategy?
感谢您的帮助!
答案 0 :(得分:2)
通用聚合器不起作用。如果两个实体都是字符串并且假设它们不需要与任何分隔符分隔,那么您可以使用的示例。但是JSON还是XML呢?简单连接这些不会起作用,因为你最终得到了2个顶级元素。我相信这就是Camel让你实现自己的原因。
答案 1 :(得分:1)
至少在版本2.13.1(我现在使用的版本)中,存在GroupedExchangeAggregationStrategy
扩展AbstractListAggregationStrategy<Exchange>
。 GroupedExchangeAggregationStrategy
将所有成员连接成List<T>
。在那之后,可能是通过使用POJO将列表转换为另一种类型。