Camel聚合器是如何工作的?

3

我有一个包含聚合器的简单路由。

---[processor]---[aggregator]---[processor]---...

如果我有4个项目按照以下顺序传递路由 - itemA1,itemB1,itemA2和itemB2,该怎么办?

我想将itemA1itemA2合并,并将itemB1itemB2合并。当前两个项目不合并时,聚合器如何工作?


3
你看过这里关于聚合的文档了吗?http://camel.apache.org/aggregator.html#Aggregator-Usingcustomaggregationstrategy - Adam Hawkes
1
如果你有《Camel实战》这本书,它会非常详细地解释这个模式以及它的工作原理。 - Claus Ibsen
@Adam 是的,我看过了。但是文档没有回答我的问题。 - CPA
1个回答

1

在@Claus Ibsen的建议下,我在他推荐的书中找到了答案。原始文档非常基础。

itemA1 -> [item_type][item_number]

对于聚合器,您需要指定以下三个配置:

  • 关联标识符 - 用于标识哪些消息属于一起。在我的例子中,可以是item_type字段,这样所有的A-items都归为一类,所有的B-items也是如此。
  • 完成条件 - 一个谓词或基于时间的条件,确定何时应发送结果消息。对于我的示例,可以是一个条件completionSize(2)
  • 聚合策略 - 指定如何组合聚合的结果消息。例如,将两个项目合并在一起,如itemA1itemA2itemB1itemB2

如果某种类型的第二个项目从未发布,则第一个项目将保留在聚合器内。但也可以设置超时等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接