Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php RabbitMQ:按优先级选择队列_Php_Rabbitmq - Fatal编程技术网

Php RabbitMQ:按优先级选择队列

Php RabbitMQ:按优先级选择队列,php,rabbitmq,Php,Rabbitmq,我在php中使用RabbitMQ,在两个队列(Q1和Q2)上有一个使用者。 因为Q1中的按摩更重要,所以我希望先处理它们 如果第一季度没有按摩,如何让消费者从第二季度开始消费 我使用: $channel->basic_consume('Q1', '', false, true, false, false, $callback); $channel->basic_consume('Q2', '', false, true, false, false, $callback); 将使用者

我在php中使用RabbitMQ,在两个队列(Q1和Q2)上有一个使用者。 因为Q1中的按摩更重要,所以我希望先处理它们

如果第一季度没有按摩,如何让消费者从第二季度开始消费

我使用:

$channel->basic_consume('Q1', '', false, true, false, false, $callback);
$channel->basic_consume('Q2', '', false, true, false, false, $callback);

将使用者附加到队列。结果是消费者在第一季度和第二季度交替使用。

我认为RabbitMQ不会按照您描述的方式做您想要做的事情。您需要用PHP编写代码,以便自己管理优先级

但是,我可以想出两个选项,让它与RabbitMQ一起工作,并为您减少代码。。。这两者都要求你做一些不同的事情

选项1:为第一季度和第二季度创建单独的消费者。 那么,哪一个更重要并不重要,因为它们都会被立即处理

这里的优势在于,您可以轻松扩展第一季度的消费者规模。只需添加更多消费者实例,您就可以更快地处理Q1消息

选项2:使用RabbitMQ中的优先级队列支持 这将要求您将所有消息发送到同一个Q,并为它们设置优先级

我个人的选择:选项1 我对优先级队列支持没有太多经验,因为我看不到使用优先级队列与使用单独的队列和使用者相比有多少优势。我喜欢扩展消费者的能力,并让Q1和Q2为不同的目的使用不同的消息格式

希望有帮助