【问题标题】:ActiveMQ CMS: How more than 1 consumer can recieve the same message on the same queue (I don't want load-balancing to happen)?ActiveMQ CMS:多于 1 个消费者可以在同一个队列上接收相同的消息(我不希望发生负载平衡)?
【发布时间】:2011-08-04 10:35:53
【问题描述】:

我已经设计并实现了我的框架,牢记 rabbimq,几乎完成了,但在最后一个状态,我必须转移到 activeMQ,所以目前,找到所有功能的等价性(我的设计是基于)在activeMQ中也是如此。 在bried,我有一个发布者,可以将任何带有路由键(主题)的消息发布到代理。现在,我可以有尽可能多的订阅者将他们的队列与该兴趣(主题)绑定,这样,每个订阅者都有自己的队列但相同的主题,代理将转发到绑定到主题的每个队列消息已发布和。此外,我的任何订阅者都可能死去并再次回来,仍然会在那里看到未消费的消息并随后消费。 现在,在 ActiveMQ 中,有主题和队列的概念,具有不同的功能。我可以使用主题来实现上述目的,但是我的订阅者必须在代理收到发布的消息时一直被唤醒,否则它会丢失这些消息。如果我使用队列,那么它将是负载平衡的,在这种情况下,并非所有订阅者都会收到所有消息。 任何想法,我怎样才能在 ActiveMQ 的情况下获得相同的功能。 还。我正在使用 CMS API 来开发我的 C++ 框架。

谢谢 迪帕克

【问题讨论】:

    标签: content-management-system queue activemq rabbitmq publish-subscribe


    【解决方案1】:

    您可能希望考虑使用 Apache Camel 为您所需的场景定义路由,否则请查看 AMQ documentation 中的镜像队列和虚拟目标。

    【讨论】:

    • 我也得到了这个虚拟目的地并阅读它,看看它是否能解决我的问题。除此之外,我看到我还可以将 createDurableConsumer 与主题一起使用,当我的消费者重新启动时,我需要指定相同的 clientID 以确保我再次收到错过的消息,对此有何评论?
    • 是的,我的 createConnection(uri, user, password, clientId) 和 createDurableConsumer(topic, clientId, "") 为我实现了上述目标。
    【解决方案2】:

    检查 JMS 实现提供程序配置。您可以在那里指定最高优先级的消费者,一旦它开始接收消息,除非活动的消费者失败,否则其他消费者将不会收到任何消息。

    【讨论】:

      猜你喜欢
      • 2015-02-02
      • 2020-03-17
      • 2016-07-15
      • 2013-04-10
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 2019-04-30
      • 1970-01-01
      相关资源
      最近更新 更多