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

Rabbitmq : Prioritize consuming messages from multiple queues

如果我有两个队列,我想从中使用消息,并且我为其使用一个 SimpleMessageQueueListenerContainer,当两个队列都有消息时,侦听器 invoked/messages 将按什么顺序使用?

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

我有一个消费者应用程序需要使用来自 2 个队列的消息——比如 regular-jobs-queue 和 infrequent-jobs-queue。如果“infrequent-jobs-queue”中有任何消息,我想在使用来自“regular-jobs-queue”的消息之前使用这些消息。我可能无法将这些组合起来并将所有消息放入单个 rabbitmq 级别的优先级队列中,并为不频繁的工作消息分配更高的优先级,因为一些即将到来的用例,如在不影响不频繁的工作和其他情况下清除常规工作。

我知道 RabbitMQ 支持消费者优先级,但我不太确定它是否适用于此。我希望我的消费者应用程序的所有实例首先使用 infrequent-jobs-queue 的消息(如果有的话)并且不在这些消费者中优先考虑。

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

任何帮助将不胜感激。谢谢。

~拉希达

你不能为所欲为;消息将以同等优先级传递。

将它们移动到内存中的内部队列将面临消息丢失的风险。

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

这样你就拥有了完全的控制权。