2012-01-10 50 views
0

在RabbitMQ隊列中是否可能有互斥體,即如果客戶機正在從隊列中讀取數據,則其他客戶機不應從隊列中讀取數據。那可能嗎?Mutex是rabbitmq

讓我解釋一下我的情況:在兩個不同的服務器上運行

兩個應用。閱讀相同的隊列。但是,如果一個應用程序正在運行並從隊列中讀取消息,則其他應用程序不應該執行任何操作。如果主應用程序失敗或停止,則其他應用程序應該從此隊列開始讀取 。

這是一種故障轉移機制。有沒有人嘗試過。任何幫助深表感謝。

+0

你的做法是有點缺陷。您應該在應用程序級別處理此問題,而不是在隊列級別。 – DarthVader 2012-01-10 18:51:06

+0

如果在rabbitmq中有一種方法,我認爲它會很有趣,所以在這裏發佈它,以查看任何RabbitMq專家可能會回答這個問題,這可能會幫助其他人和我。感謝您的輸入@Darth – Madhan 2012-01-11 11:20:44

回答

0

只要我已搜查,沒有找到解決辦法......一個簡單的解決方案是

  • 創建隊列調用它鎖定隊列。

  • 只有一條消息讓應用程序從隊列中讀取它。

  • 當應用程序在另一臺服務器上啓動時,它將等待隊列中的消息。所以,如果第一個失敗第二個

  • 人們將讀取消息並開始處理它應該讀取的所需隊列中的消息。

互斥的隊列,僅此而已。 注意:只有在鎖隊列中只有消息時,此方法纔有效。確保你在你的應用程序中處理它。

0

這次談話明確地解釋了爲什麼這是一個壞主意:

http://www.youtube.com/watch?v=XiXZOF6dZuE&feature=share&t=29m55s

從〜29米55S在

+1

當您要鏈接到另一個StackOverflow問題以外的其他內容時,請在答案中提供足夠的信息,以便在未來鏈接斷開時仍然有用。 – 2014-04-28 14:09:09