我知道AMQP並嘗試爲RabbitMQ系統制定通知體系結構。RabbitMQ - 主題交換 - 同一主題的兩個或更多的消費者
我想要一個Topic交換(NotificationsExchange,我們假設),具體是因爲我想靈活使用主題交換附帶的路由鍵和隊列,以及更多關於該主題未來擴展的選項。我可能是錯誤的,因爲...
我也希望有兩個或更多的消費者使用每個通知。作爲基準,我希望每個發佈的通知都能在數據庫中結束。此外,我希望每個通知都可以被客戶端應用程序使用(例如,Web應用程序使用並進一步推送套接字以便在沒有db輪詢的情況下立即通知用戶)。
這聽起來像是一個扇出式的情況,除了我不想這樣做,因爲我需要更多的隊列來處理各種通知(我認爲 - 對AMQP來說還是新手,並試圖包裹我的頭繞它)。
是否有可能讓兩個消費者從同一隊列中得到通知(始終如一)?
例如:
- 推
Notif.NotifGroup.User.ThisUser
通過NotificationExchange - 有無
dbListener
結合Notif.#
- 有無
mvcClientListener
也結合Notif.#
(並且進一步確定用戶是否在線並經由套接字下游推)
我不知道如果我在正確的軌道她即我正在讀的是「多個消費者進入同一隊列以循環方式進行負載均衡」,坦率地說,我不知道這意味着什麼。
是否有可能有一個主題交流,其中兩個消費者可以從一致同一個隊列(例如,相同的路由鍵)讀取相同的消息,或者我必須去與扇出交易所呢?
謝謝。
謝謝 - 我hadn」如果我可以根據相同的「推送標準」創建兩個完全分開的隊列(因爲缺乏正確的術語 - 我將不得不更仔細地查看這些細節)。作爲一個便箋,我今天早上開始深入研究RabbitMQ和AMQP,這是我在SO上看到的關於這個主題的第四篇文章(也可能有一兩篇博文)我購買了一個幾小時前的電子書。很有幫助。 – jleach
順便說一下,如果偶然可以舉一個快速的例子來說明如何創建這些單獨的隊列,那就太棒了。如果沒有,我會最終找到它,但我認爲我還沒有發現它,並且RabbitMQ的內容似乎沒有涵蓋這種情況。再次感謝 – jleach
很高興我的工作很有幫助! :)對於多個隊列,它與創建單個隊列並將其綁定到交換機的方式相同。但是您需要做兩件事:1)確保每個應用程序實例只有1個RMQ連接,並且2)爲每個使用者使用一個新的通道。 1連接,該連接中有許多通道。連接是昂貴且有限的。頻道很便宜,幾乎沒有限制。所有真實的工作都是在頻道上完成的,最簡單的方法是有1個頻道專用於1個事物。希望有所幫助! –