2015-10-14 70 views
1

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

下列任一将是很好的解决方案,为我们:

  • 到指定活动的消费者在队列中的最大数(在本例中1)的一种方式。
  • 在创建新队列之前,询问ActiveMQ是否有任何消费者已经处于活动状态。

感谢

回答

1

有经纪人的一侧没有设置执行这样的事情。但是,您可以在所有客户中使用独家消费者选项。这将允许所有消费者连接,但实际上只有一个消费者会收到所有消息,直到消失并选择新的独占消费者。

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

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

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

+0

我们控制整个生态系统。 AMQ经纪人,生产者和消费者都是我们自己的应用程序和基础设施。所以我不关心支持未知的应用程序。但是,由于我们问题域中的某些限制,我们冒着为每个队列创建多个消息使用者的风险,并且我们希望防止发生这种情况。 您是否知道有关询问队列中现有消费者的AMQ的任何机制?我相信这一定是可能的,因为您可以在AMQ管理页面中查看有关消费者的详细信息。 谢谢 –

相关问题