【问题标题】:RecipientList Apache Camel EIPRecipientList Apache Camel EIP
【发布时间】:2014-03-28 14:09:26
【问题描述】:

我正在尝试在 Camel 中使用 RecipientList 模式,但我想我可能没有抓住重点。以下代码仅在屏幕上显示一个条目:

@Override
protected RouteBuilder createRouteBuilder() {
    return new RouteBuilder() {
        public void configure() {
            from("direct:start").recipientList(bean(MyBean.class, "buildEndpoint"))
                    .streaming()
                    .process(new Processor() {
                        @Override
                        public void process(Exchange exchange) throws Exception {
                            System.out.println(exchange.getExchangeId());
                        }
                    });
        }
    };
}

public static class MyBean {
    public static String[] buildEndpoint() {
        return new String[] { "exec:ls?args=-la", "exec:find?args=."};
    }
}

我还尝试从 buildEndpoint() 方法返回一个逗号分隔的字符串,并在收件人列表 () 组件定义的表达式中使用 tokenize(",") 但我仍然得到相同的结果。我错过了什么?

【问题讨论】:

    标签: apache-camel


    【解决方案1】:

    这是预期的,收件人列表将同一邮件的副本发送给 X 个收件人。您之后执行的处理器在收件人列表完成后执行,因此只执行一次。

    【讨论】:

    • 我完全理解,但是从 recipientList 端点发出的所有消息发生了什么?看起来只有最后一个端点进入了最终处理器。
    • 是的,它们是聚合的,您可以使用自定义聚合策略。
    猜你喜欢
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    • 2014-03-12
    • 2013-05-23
    相关资源
    最近更新 更多