apache camel aggregator2 - 如何聚合两种消息类型中的一种?

时间:2012-04-24 19:13:31

标签: apache-camel aggregator

我有两种类型的消息(A和B)到达聚合器。如何聚合第一个A到达,第一个B到达?

1 个答案:

答案 0 :(得分:3)

如果你有EIP书或Camel in Action书,那么请阅读关于Aggregator EIP的理论。那会告诉你很多。聚合EIP是最复杂的EIP之一,因此花费一些时间来研究模式是值得的。

在一个坚果中你需要关联A和B,这样聚合EIP将匹配这两条消息,并将它们聚合在一起。

所以你需要实现这种关联作为表达式的工作方式,在Camel中你实现了这个例子,例如使用方法调用表达式,它允许你在方法调用中使用Java代码来确定它。

该方法的结果应该是一个指示相关组标识符的String。然后,第一个A和第一个B消息应该具有相同的相关组标识符。例如,将您的匹配消息分组。

我建议稍微研究一下EIP,然后再考虑如何编写相关逻辑。然后,您可以在Java代码中实现它,然后使用Camel聚合器的方法调用表达式。

第二个A,第三个A,第二个B和第三个B消息应该怎么办?它们应该如何相关?

应该是

1A + 1B
2A + 2B
3A + 3B

然后消息可以按任何顺序到达聚合EIP模式,例如

  1B
  2B
  1A
  3B
  2A
  3A

聚合器的结果如上图所示,1A + 1B ......?