2016-03-03 70 views
0

我創建了一個隊列「a.1」,一個交換「a」並通過一個rabbitmq通道將它們綁定在一起。該頻道連接約3百個頻道。正常運行20-30分鐘後,綁定消失,隊列綁定爲默認交換。我看到它在rabbitmq管理員,我看到隊列一旦關閉並自動恢復。恢復後,我可以看到頻道改變。頻道信息:IP:2341(633),端口改爲IP:3350。但隊列綁定到默認exchange.Why rabbitmq有這種奇怪的行爲?如何避免它?爲什麼rabbitmq的隊列綁定是自動更改的?

+0

以下是什麼意思「他的頻道在一個有大約3百個頻道的連接中」?你如何創建這個交換,即你設置了哪個自動刪除標誌?你如何綁定隊列?一些代碼會很好... – cantSleepNow

+0

1,獲取一個rabbitmq連接2,從連接中獲取一個通道。3創建一個交換,4創建一個帶params :: queue的隊列false:自動刪除true。重複2,3,4次300次,所以這個頻道使用一個連接。 – user2219372

+0

對不起,我不明白...如果你只有一個客戶,你爲什麼每次都創建一個連接?你也沒有說你如何創建一個交流。 – cantSleepNow

回答

1

您正在使用auto-delete隊列,這意味着如果所有消費者失敗,隊列將自動刪除。然後另一個頻道可以用相同的名稱重新創建隊列。 因此,如果您創建具有相同名稱的隊列,則可以確保每次創建隊列時都會綁定它。或者,您可以添加到期TTL自動刪除隊列以等待刪除前一段時間(以允許另一個通道開始消耗)。