【问题标题】:How to limit number of consumers on an ActiveMQ JMS queue如何限制 ActiveMQ JMS 队列上的消费者数量
【发布时间】:2016-01-12 21:14:07
【问题描述】:

我们正在使用 ActiveMQ,并且正在寻找一种方法来为我们的一些 JMS 队列实施单一消费者策略。我花了一些时间在谷歌上搜索,但找不到任何方法来限制队列中的消费者数量。

以下任何一种对我们来说都是很好的解决方案:

  • 一种指定队列中最大活动消费者数量的方法(在我们的案例中为 1)。
  • 一种在创建新队列之前询问 ActiveMQ 以查看是否有任何消费者已为队列活动的方法。

谢谢

【问题讨论】:

    标签: jms activemq


    【解决方案1】:

    代理端没有设置来强制执行这样的事情。但是,您可以在所有客户端中使用独占消费者选项。这将允许所有消费者连接,但只有一个会真正获得所有消息,直到它退出并选择新的独占消费者。

    如果您打算托管某种 AMQ 云服务,并且确实希望确保不受您控制的应用程序按照 SLA 运行,那么您必须进行一些编码。您可以实现 ActiveMQ 插件。

    如果你实现一个插件并创建一个BrokerFilter,那么你可以覆盖`addConsumer?方法。查看RuntimeConfigurationPlugin 了解如何设置插件。

    请注意,实现插件不是一个简单的管理调整,而是需要一些工作。

    【讨论】:

    • 我们控制着整个生态系统。 AMQ 代理、生产者和消费者都是我们自己的应用程序和基础设施。所以我不关心支持未知的应用程序。但是,由于我们的问题域中的一些限制,我们冒着为每个队列创建超过 1 个消息使用者的风险,我们希望防止这种情况发生。您是否知道有任何机制可以向 AMQ 询问队列的现有消费者?我相信这一定是可能的,因为您可以在 AMQ 管理页面中查看有关消费者的详细信息。谢谢
    猜你喜欢
    • 2014-06-27
    • 2012-08-11
    • 1970-01-01
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 2018-12-22
    • 2019-02-26
    相关资源
    最近更新 更多