代码之家  ›  专栏  ›  技术社区  ›  Thelvyn

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

  •  1
  • Thelvyn  · 技术社区  · 10 年前

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

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

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

    非常感谢您的任何建议!

    1 回复  |  直到 10 年前
        1
  •  1
  •   vikingsteve    10 年前

    我想你只是想把信息放在 seda 排队并使用 resequencer 将它们重新合并为顺序。

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

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

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