我創建了一個使用RabbitMQ進行消息傳遞的基本應用程序。消息在一臺服務器上發佈,然後下游的另一臺服務器將有一個消耗信息的長時間運行的進程。現在,我把它設置如下:RabbitMQ/AMQP HA App:消費者死亡/退出後的持續隊列?
出版商:
- 聲明直接交換myexchange
- 發佈消息myexchange交換路由鍵payload.routingkey
Co nsumer程序:
- 聲明直接交換myexchange
- 聲明隊列我的專用隊列名稱(可選擇耐用設置爲
true
) - 綁定我的專用隊列名稱排隊到myexchange exchange
- 從消費消息my-specific-queue-name
我已經有了這個過程運作良好。我遇到的情況是,如果我的消費者程序死亡,似乎發佈到myexchange的新消息將丟失,因爲沒有隊列將被綁定到交換機。是否有一種配置,即使消費者程序消失,消息仍然可以排隊,以便當消費者程序重新聯機時,消息仍然能夠被接收?
哪些是您使用的書寫語言的客戶端? – cantSleepNow
@cantSleepNow爲兩個客戶端使用perl。我正在使用[Net :: RabbitMQ](https://metacpan.org/pod/Net::RabbitMQ)模塊。 – Devin
檢查聲明隊列時,什麼是「獨家」參數的默認值。由於您將「持久」設置爲true,因此可能是,如果「排他」爲真,那麼一旦消費者斷開或死亡,隊列就會被刪除 – cantSleepNow