Rabbitmq:优先使用来自多个队列的消息

时间:2016-11-16 19:39:41

标签: rabbitmq spring-amqp spring-rabbitmq

如果我有两个队列,我想从中使用消息,并且我使用单个SimpleMessageQueueListenerContainer,当两个队列都有消息时,将调用侦听器/消息的顺序?

我会尝试更具体地说明我正在处理的问题:

我有一个消费者应用程序需要消耗来自2个队列的消息 - 比如regular-jobs-queue和infrequent-jobs-queue。如果'infrequent-jobs-queue'中有任何消息,我想在使用'regular-jobs-queue'消息之前消费这些消息。我可能无法将这些消息组合在一起并将所有消息放入单个rabbitmq级别优先级队列中,并为不常见的作业消息分配更高的优先级,因为一些即将发生的用例如清除常规作业而不会影响偶发作业等。

我知道RabbitMQ支持消费者优先权,但我不确定它是否适用于此处。我希望我的消费者应用程序的所有实例首先使用不常见作业队列的消息(如果有的话),而不是在这些消费者中优先考虑。

或者我是否应该拥有2个容器,每个队列都有专用的消费者线程,并且有一个内部优先级队列数据结构,我可以将消息放入Rabbitmq队列中。

任何帮助都会非常感激。感谢。

〜Rashida

1 个答案:

答案 0 :(得分:0)

你不能做你想做的事;消息将以相同的优先级传递。

将它们移动到内部内存中队列可能会导致邮件丢失。

您可能需要考虑使用RabbitTemplate.receive()receiveAndConvert()方法之一而不是消息驱动的容器。

这样你就可以完全控制。