php rabbitmq如何判断队列是否存在

php rabbitmq how to check if the queue exists

我需要为队列创建一个析构函数。所以无论如何如果系统突然崩溃,析构函数都会被调用。仅当队列尚未关闭时,析构函数才会关闭所有队列和连接。

有没有办法检查队列是否存在或类似的东西?至今没找到。

目前这是我的代码

public function __destruct(){
      # add if queue exists here
  $this->channels->close();
  $this->connection->close();
  echo 'Connection closed.';
 }

您不能像关闭通道或连接那样"close"队列。

如果您希望在消费者与 RabbitMQ 断开连接时删除队列,请将 $auto_delete 参数设置为 true 来声明队列。

RabbitMQ 会在没有更多消费者从该队列中读取时为您删除队列。

顺便说一下,这似乎是默认设置,因此如果您不覆盖 $auto_delete,您的队列应该会自动删除:https://github.com/videlalvaro/php-amqplib/blob/master/PhpAmqpLib/Channel/AMQPChannel.php#L339