Разделить и объединить в Apache Camel

Я хотел бы разделить тело сообщения обмена (это список объекта MyCustomClass), обработать их (один за другим) и объединить все обмены. Сплит в порядке, обрабатывать по одному и в порядке, но я не могу понять, как их объединить.

from("mysource")
    .unmarshal(new ListJacksonDataFormat(MyClass.class))
    .split().body()
    .process(new Processor() {
        @Override
        public void process(Exchange exchange) throws Exception {
            // process MyClass item
            exchange.getIn().setBody(processedItem);
        }
    })
    .to("destinationForProcessedItem")
    .aggregate(new GroupedExchangeAggregationStrategy()) <== Seems like problem is here
    .process(new Processor() {
            // handle result of aggregation
    })

Мне не нужно сложное агрегирование, просто соберите список разделенных бирж и обработайте их в конечном процессоре.

2 ответа

Используйте встроенный агрегатор в сплиттере, см. Шаблон EIP составленного обработчика сообщений: http://camel.apache.org/composed-message-processor.html в разделе под названием " Пример", в котором используется только Splitter.

Пиши вот так

         .aggregate(new AggregationStrategy() {
                @Override
                public Exchange aggregate(Exchange exchange, Exchange exchange1) {
                    //logic for aggregation using exchnage and exchange1
                }
            })
Другие вопросы по тегам