我有一 strip 有聚合器的简单路线。
---[processor]---[aggregator]---[processor]---...
如果我有 4 个项目按以下顺序通过路由 - itemA1、itemB1、itemA2 和 itemB2
,会怎样?
我想将 itemA1
与 itemA2
合并,将 itemB1
与 itemB2
合并。当前两个项目不合并时,聚合器如何工作?
最佳答案
在@Claus Ibsen 的建议下,我在他推荐的书中找到了答案。原始文档非常简陋。
itemA1 -> [item_type][item_number]
对于聚合器,您必须指定以下三个配置:
- 相关标识符 - 标识哪些消息属于一起。在我的例子中,它可能是
item_type
字段,因此所有A-items
都属于一起,并且所有B-items
都属于。 - 完成条件 - 确定何时应发送结果消息的谓词或基于时间的条件。对于我的示例,这可能是一个条件
completionSize(2)
。 - 聚合策略 - 指定如何组合聚合结果消息。例如。将两个项目连接在一起,例如
itemA1itemA2
和itemB1itemB2
出于任何原因,永远不会发布一个类型的第二个项目,第一个项目将保留在聚合器中。但也可以设置超时等。
关于java - Camel 聚合器如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41618840/