Simple AggregationStrategy Apache Camel

时间:2013-12-11 18:45:46

标签: java apache-camel spring-dsl

我想知道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?

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

通用聚合器不起作用。如果两个实体都是字符串并且假设它们不需要与任何分隔符分隔,那么您可以使用的示例。但是JSON还是XML呢?简单连接这些不会起作用,因为你最终得到了2个顶级元素。我相信这就是Camel让你实现自己的原因。

答案 1 :(得分:1)

至少在版本2.13.1(我现在使用的版本)中,存在GroupedExchangeAggregationStrategy扩展AbstractListAggregationStrategy<Exchange>GroupedExchangeAggregationStrategy将所有成员连接成List<T>。在那之后,可能是通过使用POJO将列表转换为另一种类型。