RecipientList Apache Camel EIP

Я пытаюсь использовать шаблон RecipientList в Camel, но я думаю, что могу упустить суть. Следующий код отображает только одну запись на экране:

@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 (",") в выражении определения компонента recipientList (), но я все равно получил тот же результат. Что мне не хватает?


person Corey J. Nolet    schedule 28.03.2014    source источник


Ответы (1)


Ожидается, что список получателей отправит копию того же сообщения X получателям. Обработчик, который вы выполняете впоследствии, выполняет после составления списков получателей, и поэтому выполняется только один раз.

person Claus Ibsen    schedule 28.03.2014
comment
Я полностью это понимаю, но что случилось со всеми сообщениями, отправленными из конечных точек recipientList? Похоже, что только последняя конечная точка попала в конечный процессор. - person Corey J. Nolet; 29.03.2014
comment
да, они агрегированы, вы можете использовать собственную стратегию агрегирования. - person Claus Ibsen; 29.03.2014