Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.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,我试图让消费者在consumer.php中收听无名exchange中的所有队列,但我必须提到队列名称,如图所示: $this->channel->basic_consume('Cancelcontact', '', false, false, false, false, array($this, 'processMsg')); $this->channel->basic_consume('Acceptcontact', '', false, false, false, f

我试图让消费者在consumer.php中收听无名exchange中的所有队列,但我必须提到队列名称,如图所示:

$this->channel->basic_consume('Cancelcontact', '', false, false, false, false, array($this, 'processMsg'));
$this->channel->basic_consume('Acceptcontact', '', false, false, false, false, array($this, 'processMsg'));
$this->channel->basic_consume('Declinecontact', '', false, false, false, false, array($this, 'processMsg'));

是否有任何方法可以获取通道中所有队列的名称,并为相同目的编写单个基本消费???

即使可能,这也是一个坏主意

拥有多个队列允许您拥有多个使用者,每个使用者都可以处理特定类型的消息。通过将所有队列转到同一消费者,代码将必须检查消息的类型,以确定如何处理该消息

这是RabbitMQ已经为您完成的工作的重复,可能会让您处于“选择性消费者”模式

处理
AcceptContact
CancelContact
消息的过程将不同。因此,处理这些消息的代码将不同


让处理
AcceptContact
消息的代码仅从
AcceptContact
队列中使用。拥有可以处理
CancelContact
消息的代码,该代码仅从
CancelContact
队列中使用。

即使可能,这也不是一个好主意

拥有多个队列允许您拥有多个使用者,每个使用者都可以处理特定类型的消息。通过将所有队列转到同一消费者,代码将必须检查消息的类型,以确定如何处理该消息

这是RabbitMQ已经为您完成的工作的重复,可能会让您处于“选择性消费者”模式

处理
AcceptContact
CancelContact
消息的过程将不同。因此,处理这些消息的代码将不同


让处理
AcceptContact
消息的代码仅从
AcceptContact
队列中使用。拥有可以处理
CancelContact
消息的代码,该代码仅从
CancelContact
队列中使用。

在我的情况下,我希望我的消费者能够收听所有队列。我在同一消费者类中为每种类型的消息指定了不同的函数(Cancelconatct、Acceptcontact等)。所以我需要运行consumer类的两个实例。是否有任何方法使使用者可以侦听通道中的所有队列?在同一实例/进程中可以有多个使用者。对“基本消费”(或您正在使用的任何“订阅”方法)的每次调用都是一个消费者。这没什么错。但您需要为每个队列创建一个使用者。没有办法自动侦听所有队列。在我的情况下,我希望我的消费者侦听所有队列。我在同一消费者类中为每种类型的消息指定了不同的函数(Cancelconatct、Acceptcontact等)。所以我需要运行consumer类的两个实例。是否有任何方法使使用者可以侦听通道中的所有队列?在同一实例/进程中可以有多个使用者。对“基本消费”(或您正在使用的任何“订阅”方法)的每次调用都是一个消费者。这没什么错。但您需要为每个队列创建一个使用者。没有办法自动侦听所有队列。