Camel使用聚合并根据动态完成大小完成

6ljaweal  于 2022-11-07  发布在  Apache
关注(0)|答案(1)|浏览(100)

你好,我有一个 Camel 路由,分裂一个传入的消息,我想聚合这个消息,但我不知道有多少消息将被分裂。
我使用了以下方法:

.aggregate(new AggregateStrategy()).header("uuid").completionSize(header("CamelSplitSize"))

这不起作用,它挂起了...但是,如果我将完成大小设置为一个数字值,它就起作用了。
任何人都知道如何动态聚合,并等待完成。顺便说一句,头部是在分割之前设置的。

rekjcdws

rekjcdws1#

不需要聚合器,也不需要完成大小。您只需要带有聚合策略的拆分器EIP
在链接的示例中,您可以看到这样的Splitter会重新聚合之前拆分的任何内容,而不管拆分产生了多少部分。

// a Splitter with an AggregationStrategy
.split([yourSplitCriteria], new MyAggregationStrategy())
    // each splitted message part is sent to this bean 
    .to("bean:PartProcessor")
    // you can do whatever you want in here
    // end the split to re-aggregate the message parts
.end()
// here, after the split-ending you get the re-aggregated messages

相关问题