我有一个apache camel应用程序,其中有两条路径(路径A和路径B)将数据提供给聚合器,然后输出包含来自两个对象的数据的对象(C)。
来自聚合器的对象必须包含来自每条路线的单个物体(即A和B)。它不得包含来自同一路线的两个物体(即A和A)
我的问题是,如何防止聚合来自同一路线的对象。我想我可以通过在聚合器中设置一个限制来加入消息,不仅可以使用相同的关联键,还可以使用不同类型的消息。
如果此功能已经存在,我就会徘徊。
非常感谢任何建议。
$ {机构}
<!-- messages from route B -->
<route id="routeB" />
<from uri="direct:startB"/>
<to uri="ldap:ldapcontext?base=DC=company,DC=net"/>
<split>
<simple>${body}<simple>
<marshal ref="ObjectBJsonConverter"/>
<unmarshal ref="ObjectBJsonConverter"/>
<!-- add correlation key in header as 'objectid' -->
<to uri="bean:myProcessor?method=addObjectBCorrelationKey"/>
<to uri="seda:myAggregator"/>
</split>
<!-- aggregate the messages, create new ObjectC that contains ObjectA and ObjectB -->
<route id="aggretatorRoute">
<from uri="seda:myAggregator"/>
<aggregate ref="myEntityAggregator" completionSize="2" completionTimeout="200000" discartOnCompletionTimeout="true" ignoreInvalidCorrelationKeys="true">
<correlationExpression><simple>${in.header.objectid}</simple></correlationExpression>
<to uri="bean:myProcessor?method=doSomethingWithObjectC"/>
</aggregate>