给定以下 Camel 聚合器(通过 Spring XML):
<aggregate strategyRef="myggregationStrategy" completionSize="3">
<correlationExpression>
<simple>${header.id} == 1</simple>
</correlationExpression>
<to uri="bean:postProcessor?method=process" />
</aggregate>
completionSize
、correlationExpression
与何时调用 myAggregationStrategy#aggregate
方法之间有什么关系?当 3 条消息到达聚合器时,aggregate
是否会被调用? correlationExpression 是否充当某种过滤器?它们如何相互协作?
最佳答案
对于与您的相关表达式匹配的每个交换,都会调用
AggregationStrategy::aggregate()
。相关表达式用于关联传入的消息。 IE。确定传入消息属于哪个更大的实体。如果较大实体的各个部分散布在一起,那么您可能会并行组装多个实体,并且相关表达式将使它们分开。
完成大小是告诉聚合器您正在组装的更大实体已完成并且它应该沿路线继续聚合交换的一种方式。请参阅 this page 上的“关于完成”一章.
AggregationStrategy::aggregate()
会针对与关联表达式匹配的每条传入消息调用。
也看看这个example .
关于java - Camel 聚合器完成大小与相关表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21463287/