按时间顺序排列来自 Apache Camel 中两个来源的消息

Queue for messages from two sources in Apache Camel with chronological order

我想在 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:...")

您需要注意超时设置以及合适的设置。

(注意:我没有测试过这段代码,所以请标记为建议)。