Разделить и объединить в 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
}
})