我在php中使用RabbitMQ,并且有一个消费者在两个队列Q1
和Q2
上。
由于Q1
中的按摩更重要,我希望首先处理它们。
如果Q2
中没有按摩,如何让消费者从Q1
消费?
我用:
$channel->basic_consume('Q1', '', false, true, false, false, $callback);
$channel->basic_consume('Q2', '', false, true, false, false, $callback);
将消费者附加到队列。结果是消费者在Q1和Q2之间交替。
答案 0 :(得分:1)
我认为RabbitMQ不会按照你描述的方式做你想做的事。您需要在PHP中编写代码来管理自己的“优先级”,这样做。
但是,我可以想到两个选项可以让它与RabbitMQ配合使用,而且代码更少......这两个选项都要求你做一些不同的事情。
然后哪个更重要并不重要,因为它们都会被立即处理。
这里的优势在于您可以轻松扩展Q1的消费者。只需添加更多消费者实例,您就可以更快地处理Q1消息。
https://www.rabbitmq.com/priority.html
这需要您将所有消息发送到同一个Q,并为它们设置优先级。
我对优先级队列支持没有太多经验,因为我没有看到使用它与使用单独的队列和使用者相比有很多好处。我喜欢扩展消费者的能力,并且让Q1和Q2使用不同的消息格式用于不同的目的。
希望有所帮助!