【问题标题】:Aggregating JMS messajes from many destinations to a single queue将来自多个目的地的 JMS 消息聚合到单个队列
【发布时间】:2013-07-10 00:27:39
【问题描述】:

将来自许多不同来源(实际上是队列/主题)的消息聚合到单个队列/主题中然后使用它的最佳方法是什么?我正在尝试设计一个应用程序来使用 weblogic 接收来自 JMS 中不同主题的消息。

【问题讨论】:

    标签: jms weblogic jms-topic


    【解决方案1】:

    关于质量要求的一些建议。我相信你必须考虑他们。 它们将与您的技术解决方案高度相关。

    1. 消息丢失是否可以接受? 可以考虑客户端确认。 例如内存队列位于中间,例如传入队列 1...n -> 内存中的 ArrayBlockingQueue -> 传出队列。 ArrayBlockingQueue 中的数据,会在应用崩溃时丢失。

    2. 单个传出队列是否可以接受消息重复? 我建议是的。 设置适用的级别 PossibleDuplicateFlag 让客户端意识到这一点。

    3. diff 传入队列中每秒传入消息的速度有多快? 一个队列会话只有一个唯一线程。必须提前考虑性能。

    【讨论】:

      【解决方案2】:

      您可以将自己的“聚合器”编写为独立的 Java 应用程序:

      • 对于每个队列/主题,在其自己的线程中都有一个阅读器。
      • 每个阅读器在“聚合队列”上再次发送其接收到的消息。

      • 让另一个线程监听“聚合队列”。

      作为一种变体,您可以使用 JVM 队列(如 java.util.concurrent.ArrayBlockingQueue)作为“聚合队列”。这更快,不需要另一个 MQ 队列,不需要网络带宽,但它不是持久的。


      另一个想法是为每个传入队列/主题使用“消息驱动 bean (MDB)”:

      • 同样,这些 MDB 中的每一个都只是读取消息并将其重新发送到“聚合队列”。
      • 让另一个 MDB 监听“聚合队列”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-23
        • 1970-01-01
        • 2015-01-13
        • 1970-01-01
        • 2011-04-25
        • 2014-11-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多