我们在我们的应用程序中使用ActiveMq。我们需要在队列上实现优先级消费者机制。我们有多个消费者,我们希望将它们视为主/从。因此,主消费者将具有更高的优先级并且将消耗所有消息,并且一旦主服务器关闭,则消费者(具有更高优先级)将消耗来自队列的所有请求。
为实现此方案,我们遇到了优先级队列的机制。所以,我们通过这种方式初始化队列:
javax.jms.Queue queue = queueSession.createQueue("myQueue" + "?consumer.priority=" + 127);
并为剩余的从属节点分配了较少的优先级。
但是这种机制预计不会正常工作,有时它可以正常工作,我们获得具有最高优先级的消费者的所有请求,但有时优先级较低的消费者也开始消费消息,而具有最高优先级的消费者工作正常。
我们也尝试使用consumer.exclusive=true
选项,没有运气。
注意:我们现在在同一台计算机上本地运行所有组件(ActiveMQ,生产者和消费者应用程序),因此不会涉及网络延迟。我们正在使用默认预取策略运行消费者。
是否有其他方法可以使用activeMq实现此方案,或者我们是否缺少任何配置。