我想使用RabbitMQ实现竞争的消费者,我有2个(或更多)消费者:
消费者1可以使用“红色”类型和“蓝色”类型的消息
使用者2可以使用类型为“红色”和类型为“黑色”的消息
现在,我希望使用竞争性使用者模式在使用者(以及可能具有相同配置的更多使用者实例)之间进行负载平衡,并且我希望保持消息的“松散”完整(我不愿意)需要完美的订购,但希望2小时前的邮件比2分钟前的邮件要早处理)。
示例:我想通过以下方式处理以下消息:
有什么办法可以使用RabbitMQ做到这一点? 如果只为每种消息类型排队,那么我将无法确保消息顺序。
如果RabbitMQ不是适合该工作的工具,那么还有其他更合适的选择吗?
答案 0 :(得分:0)
您可以使用priority queue
解决此问题。通过为red
消息赋予更高的优先级,您的consumers
将首先获取red
消息。当不再有red
条消息时,您的consumers
将开始使用blue
条消息。
使用priority queue
时,请确保保持较低的basic.qos
值。这样可以在队列中确定消息的优先级。