2015-12-05 83 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