2016-11-16 163 views
0

如果我有两个队列用于消费消息,并且我使用一个SimpleMessageQueueListenerContainer作为消息,那么当两个队列中都有消息时,将以何种顺序调用侦听器?Rabbitmq:优先消费来自多个队列的消息

我会尝试更具体,我的工作对这个问题的:

我有一个需要从2个队列消费消息的消费者应用程序 - 比如定期的作业队列和偶发的作业队列。如果'infrequent-jobs-queue'中有任何消息,我想在消费'regular-jobs-queue'消息之前使用这些消息。我可能无法将这些优先级更高,因为一些即将到来的使用情况一样定期清洗的作业,而不会影响罕见的作业等结合起来,并把所有的邮件到一个单一的RabbitMQ级优先级队列,并分配给不频繁,作业消息。

我知道的RabbitMQ对消费者的优先支持,但我不是很确定这是否是适用在这里。我希望我的客户应用程序的所有实例首先使用不频繁作业队列的消息(如果有的话),而不是在这些消费者中优先化。

或者我想有2个容器中,其中每个队列专用消费者线程(S)和具有内部优先权队列数据结构进我可以把消息作为从队列的RabbitMQ时消耗。

任何帮助将非常感激。谢谢。

〜拉希达

回答

0

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

将它们移动到一个内部存储器内的队列将风险消息丢失。

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

你有完全控制的方式。

+0

这需要我从基于回调的方法转移到基于轮询。将看看我是否可以试试看。谢谢。 – Rashida