【问题标题】:How to use Apache Camel aggregator如何使用 Apache Camel 聚合器
【发布时间】:2021-07-10 03:59:21
【问题描述】:

我有一个非常简单的用例,我想将一组 sting 放在一起,并尝试为此使用聚合器 EIP。但是,当尝试启动路由时,它会抱怨找不到聚合器策略:

java.lang.IllegalArgumentException: AggregationStrategy or AggregationStrategyRef must be set on Aggregate

下面是我如何重现该问题:

import org.apache.camel.RoutesBuilder;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Test;

import java.util.Arrays;
import java.util.List;

public class AggregatorTest extends CamelTestSupport {
    private static final List<String> LIST = Arrays.asList(new String[] {"one", "two", "three"});
    @Override
    protected RoutesBuilder createRouteBuilder() throws Exception {
        return new RouteBuilder() {
            @Override
            public void configure() throws Exception {
                from("direct:start")
                        .split().body()
                        .setHeader("cheese", constant("camembert"))
                        .aggregate(constant("all"))
                        .to("mock:end");
            }
        };
    }

    @Test
    public void shouldAggregateStrings() throws Exception {
        sendBody("direct:start", LIST);
    }
}

当然,解决这个问题的一个非常简单的方法是创建一个聚合策略实现并配置我的路由以使用它。但是我想了解为什么现在设置的方式不起作用。根据here 上的骆驼文档:

默认情况下,Camel 使用 DefaultAggregationCollection 和 UseLatestAggregationStrategy,所以这个简单的例子将保持 给定相关表达式的最新接收交换

我还注意到 DefaultAggregationCollection 不再是骆驼核心的一部分。那么我在这里缺少什么?

【问题讨论】:

    标签: java apache-camel


    【解决方案1】:

    那是旧文档。正确的文档位于:http://camel.apache.org/aggregator2

    例如,EIP 列表包含指向正确文档的链接:http://camel.apache.org/eip

    您可以从这些链接中找到示例,也可以在这个小示例中找到:https://github.com/apache/camel/blob/master/examples/camel-example-aggregate/README.md

    Camel in Action 书籍中有一个 EIP 章节,其中还详细介绍了聚合器:http://camel.apache.org/books

    【讨论】:

      【解决方案2】:

      我用 SpringBoot 和 Camel 制作了一个小视频来演示这个 EIP 模式。

      看看这里:https://youtu.be/IdGuGGVv51Q

      【讨论】:

        猜你喜欢
        • 2014-10-10
        • 2014-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 2015-11-22
        • 2023-03-08
        • 2022-10-13
        • 1970-01-01
        相关资源
        最近更新 更多