按时间顺序对Apache Camel中两个源的消息进行排队

时间:2015-02-27 06:55:17

标签: java apache-camel esb jbossfuse

我想在Apache Camel中实现下一个场景(包含在JBoss Fuse中):

我有两个系统,它们都分别生成存储在数据库中的事件。现在我需要从这个事件表中读取事件并将它们作为消息放入队列中(由ActiveMQ实现)。但是真正重要的是我需要保持这个队列中事件的时间顺序(创建时间),而不是创建事件的事情。

我正在寻找最大限度地使用Camel框架中的组件和模式的解决方案,当然我可以实现Camel(纯Java)之外的读取机制,但我更喜欢Camel解决方案。

非常感谢任何想法!

1 个答案:

答案 0 :(得分:1)

我认为您只想将消息弹出到seda队列并使用resequencer将它们合并回订单。

from("--database1--")
    to("seda:resequencer")

from("--database2--")
    to("seda:resequencer")

from("seda:resequencer")
    .resequence(header("date")).batch().timeout(5000L)
    .to("activemq:...")

您需要注意超时设置和适当的设置。

(注意:我还没有测试过这段代码,所以请把它作为建议)。