0

我想知道 Camel 是否提供任何开箱即用的标准聚合策略。我一直在研究,但我只能在单元测试中找到一些。这些不能从实际代码中使用。我正在尝试将它与 Apache Camel 2.12.1 和 Spring DSL 一起使用。

特别是,我正在寻找这个

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?

谢谢您的帮助!

4

2 回答 2

2

通用聚合器不起作用。如果两个主体都是字符串并假设它们不需要用任何分隔符分隔,则您的示例有效。但是 JSON 或 XML 呢?简单地连接它们是行不通的,因为你最终会得到 2 个顶级元素。我相信这就是为什么骆驼让你实现自己的。

于 2013-12-11T18:58:57.840 回答
1

至少在 2.13.1 版本(我现在正在使用的版本)中,存在一个GroupedExchangeAggregationStrategywhich extends AbstractListAggregationStrategy<Exchange>. 将GroupedExchangeAggregationStrategy所有成员连接到一个List<T>. 之后,就是将列表转换为另一种类型的问题,可能是使用 POJO。

于 2014-06-03T03:07:43.113 回答