来自Java DSL中两个队列的驼峰聚合



我有两个队列,其中有相同类型的对象。 我想通过java DSL将它们聚合到一个队列中。 谁能告诉我这是否可能? 如果是这样,是否有任何代码引用?

如果我正确理解你的问题,就可以做这样的事情。
如果你只需要将它们驱动到一个路由中(没有任何聚合、扩充等(,你可以继续这段代码:

from('direct:queue1')
.to('direct:start');
from('direct:queue2')
.to('direct:start');
from('direct:start')
//there goes your processing

如果以后需要聚合它们,请使用聚合器。或者你可以使用java-addiction301的答案中的例子,如果它解决了你的情况。

我相信这在使用内容丰富器模式在 Camel 中是可行的。

具体来说,以下范例可用于从一个队列(direct:start所在的队列(检索消息,并使用来自第二个队列(其中 direct:resource所在的队列(的消息来丰富它。 然后,可以在聚合策略实现类中生成组合的消息。

AggregationStrategy aggregationStrategy = ...
from("direct:start")
.enrich("direct:resource", aggregationStrategy)
.to("direct:result");
from("direct:resource")

最新更新