2015-12-05 4 views
3

Мне нужно создать деструктор для очереди. Поэтому в любом случае, если система внезапно выйдет из строя, будет вызван деструктор. Деструктор будет закрывать всю очередь и соединение ТОЛЬКО, ЕСЛИ очередь еще не закрыта.php rabbitmq, как проверить, существует ли очередь

Есть ли все равно, существует ли очередь или что-то подобное? До сих пор я не мог найти его.

В настоящее время это мой код

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

ответ

0

вы не можете «закрыть» очередь таким же образом закрыть канал или соединение.

Если вы хотите, чтобы очередь была удалена, когда потребитель отключается от RabbitMQ, объявите очередь с параметром $auto_delete, установленным на true.

RabbitMQ удалит очередь для вас, когда больше нет потребителей, читающих эту очередь.

Похоже, это по умолчанию, кстати, так что ваша очередь должна быть удалена автоматически, если вы не переопределяют $ auto_delete: https://github.com/videlalvaro/php-amqplib/blob/master/PhpAmqpLib/Channel/AMQPChannel.php#L339

Смежные вопросы