我需要为队列创建一个析构函数。因此,无论如何,如果系统突然崩溃,将调用析构函数。只有队列尚未关闭时,析构函数才会关闭所有队列和连接。
无论如何都要检查队列是否存在或类似的东西?到目前为止我找不到它。
目前这是我的代码
public function __destruct(){
# add if queue exists here
$this->channels->close();
$this->connection->close();
echo 'Connection closed.';
}
答案 0 :(得分:1)
您无法以关闭频道或连接的方式“关闭”队列。
如果您希望在使用者与RabbitMQ断开连接时删除队列,请声明$auto_delete
参数设置为true
的队列。
当没有更多消费者从该队列中读取消息时,RabbitMQ将为您删除队列。
顺便说一下,这似乎是默认设置,因此如果您不覆盖$ auto_delete,则应自动删除您的队列:https://github.com/videlalvaro/php-amqplib/blob/master/PhpAmqpLib/Channel/AMQPChannel.php#L339