Apache Camel中的拆分和聚合

uqjltbpv  于 2022-11-07  发布在  Apache
关注(0)|答案(2)|浏览(219)

我想拆分Exchange消息体(它是MyCustomClass对象的列表),处理它们(一个接一个),然后将所有的Exchange聚合在一起。拆分是可以的,一个接一个处理也可以,但我不知道如何聚合它们。

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
    })

我不需要复杂的聚合,只是收集拆分的交换列表,并在最终的处理器中处理它们。

83qze16e

83qze16e1#

在拆分器中使用内置聚合器,参见组合消息处理器EIP模式:https://camel.apache.org/components/latest/eips/composed-message-processor.html#_sample。

e3bfsja2

e3bfsja22#

这样写

.aggregate(new AggregationStrategy() {
                @Override
                public Exchange aggregate(Exchange exchange, Exchange exchange1) {
                    //logic for aggregation using exchnage and exchange1
                }
            })

相关问题