在ApacheCamel中按时间顺序排队等候来自两个来源的消息



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

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

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

非常感谢你的想法!

我认为您只想将消息弹出到seda队列中,并使用resequencer将它们重新合并到顺序中。

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

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

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

最新更新