【发布时间】:2016-01-12 21:14:07
【问题描述】:
我们正在使用 ActiveMQ,并且正在寻找一种方法来为我们的一些 JMS 队列实施单一消费者策略。我花了一些时间在谷歌上搜索,但找不到任何方法来限制队列中的消费者数量。
以下任何一种对我们来说都是很好的解决方案:
- 一种指定队列中最大活动消费者数量的方法(在我们的案例中为 1)。
- 一种在创建新队列之前询问 ActiveMQ 以查看是否有任何消费者已为队列活动的方法。
谢谢
【问题讨论】:
我们正在使用 ActiveMQ,并且正在寻找一种方法来为我们的一些 JMS 队列实施单一消费者策略。我花了一些时间在谷歌上搜索,但找不到任何方法来限制队列中的消费者数量。
以下任何一种对我们来说都是很好的解决方案:
谢谢
【问题讨论】:
代理端没有设置来强制执行这样的事情。但是,您可以在所有客户端中使用独占消费者选项。这将允许所有消费者连接,但只有一个会真正获得所有消息,直到它退出并选择新的独占消费者。
如果您打算托管某种 AMQ 云服务,并且确实希望确保不受您控制的应用程序按照 SLA 运行,那么您必须进行一些编码。您可以实现 ActiveMQ 插件。
如果你实现一个插件并创建一个BrokerFilter,那么你可以覆盖`addConsumer?方法。查看RuntimeConfigurationPlugin 了解如何设置插件。
请注意,实现插件不是一个简单的管理调整,而是需要一些工作。
【讨论】: