在rabbitmq中实现队列优先级

时间:2017-03-03 07:42:34

标签: grails rabbitmq priority-queue

我在我的应用程序中使用rabbitmq。有两个不同类型的请求队列。在消费者方面,我已经设置了一些正在监听这两个队列的监听器。每当有消息出现时,这些监听器就会开始处理它。我需要确保将一个队列中的消息视为高优先级项,而不是其他队列中的消息。

问题是AMQP队列是FIFO队列。如果低优先级消息出现在高优先级消息之前,则将首先消耗该消息。

我需要以这样的方式执行实现:如果任何侦听器获得空闲,它应该首先服务于高优先级队列,而不管消息到达高优先级队列的时间。

例如,在低优先级队列中有3个请求,在消费者端有2个侦听器。由于高优先级队列中没有请求,因此两个侦听器都从低优先级队列中获取消息并处理它们。同时,另一条消息在高优先级队列中排队。此时,有一个高优先级请求和一个低优先级请求。在我当前的实现中,可用的侦听器首先使用来自低优先级队列的消息。

我想知道如何设置队列优先级,以便侦听器始终首先处理高优先级队列中的消息

请帮帮我 仅供参考发布者是Grails应用程序,消费者是Java应用程序,在grails结束时,我正在使用rabbitmq插件发布消息。 谢谢!

0 个答案:

没有答案