我嘗試RabbitMQ與this Python綁定。如何設置的RabbitMQ服務器超時檢測?
我注意到的一件事是,如果我不潔地殺死一個消費者(模擬一個崩潰的程序),服務器會認爲這個消費者仍然存在很長時間。這樣做的結果是每個其他消息都將被忽略。
例如,如果您殺死消費者1次並重新連接,則1/2消息將被忽略。如果你殺了另一個消費者,那麼2/3消息將被忽略。如果你殺了3,然後3/4的郵件都將被忽略等等。
我試着打開確認,但似乎並沒有被幫助。我發現的唯一解決方案是手動停止服務器並重置它。
有沒有更好的方法?
如何重建這種情況下
運行的RabbitMQ。
取消存檔this library。
下載消費者和發行商here。 運行amqp_consumer.py兩次。運行amqp_publisher.py,在一些數據反饋,並觀察它按預期工作。消息以循環方式接收。
用kill -9或任務管理器殺死其中一個消費者進程。
現在,當您發佈消息時,50%的消息將會丟失。
我更新了我的答案。 – 2009-09-06 10:48:26
我無法複製此內容。你使用的是什麼版本的 – 2010-02-03 13:24:34
好問題 - 如果在防火牆或IP負載平衡設備後運行,在N秒後丟棄空閒套接字,這是一個關鍵問題,因爲RabbitMQ和客戶端都不會被告知套接字已經消失直到他們嘗試使用它。 – 2011-05-07 14:00:26