如果我有两个想要使用消息的队列,并且为此使用了一个SimpleMessageQueueListenerContainer,那么当两个队列都有消息时,将以什么顺序调用/使用消息呢?
我将尽量更具体地说明我正在处理的问题:
我有一个消费者应用程序,它需要使用来自2个队列的消息,比如常规作业队列和不频繁的作业队列。如果在“非频繁-作业-队列”中有任何消息,我想在使用来自“常规作业-队列”的消息之前使用这些消息。我可能无法将这些信息组合起来,并将所有消息放入一个rabbitmq级别的优先级队列中,并将更高的优先级分配给不频繁的作业消息,因为一些即将到来的用例,比如清除常规作业而不影响不频繁的作业等。
我知道RabbitMQ支持消费者优先,但我不确定它是否适用于这里。我希望我的消费者应用程序的所有实例首先使用不频繁的作业队列消息(如果有的话),而不是在这些使用者中优先处理。
或者我应该有两个容器,每个队列都有专用的使用者线程,并且有一个内部优先级队列数据结构,可以在从rabbitmq队列中使用消息时将消息放入其中。
任何帮助都会很感激的。谢谢。
拉希达
发布于 2016-11-16 20:03:06
您不能做您想做的事情;消息将以同等的优先级传递。
将它们移动到内存中的内部队列将面临消息丢失的风险。
您可能需要考虑使用RabbitTemplate.receive()或receiveAndConvert()方法之一而不是消息驱动容器。
这样你就完全可以控制了。
https://stackoverflow.com/questions/40640869
复制相似问题