RabbitMQ 有 5 種工作模式

RabbitMQ 是實現了高級消息隊列協議(AMQP)的開源消息代理軟件(亦稱面向消息的中間件)。RabbitMQ 服務器是用 Erlang 語言編寫的,而集羣和故障轉移是構建在開放電信平臺框架上的。所有主要的編程語言均有與代理接口通訊的客戶端庫。

RabbitMQ 是實現了高級消息隊列協議(AMQP)的開源消息代理軟件(亦稱面向消息的中間件)。RabbitMQ 服務器是用 Erlang 語言編寫的,而羣集和故障轉移是構建在開放電信平臺框架上的。所有主要的編程語言均有與代理接口通訊的客戶端庫。

RabbitMQ 是一套開源(MPL)的消息隊列服務軟件,是由 LShift 提供的一個 Advanced Message Queuing Protocol (AMQP) 的開源實現,由以高性能、健壯以及可伸縮性出名的 Erlang 寫成。

simple 模式

消息產生消息,將消息放入隊列

消息的消費者 (consumer) 監聽 消息隊列, 如果隊列中有消息, 就消費掉, 消息被拿走後, 自動從隊列中刪除 (隱患 消息可能沒有被消費者正確處理, 已經從隊列中消失了, 造成消息的丟失,這裏可以設置成手動的 ack, 但如果設置成手動 ack,處理完後要及時發送 ack 消息給隊列,否則會造成內存溢出)。

work 工作模式

消息產生者將消息放入隊列消費者可以有多個, 消費者 1, 消費者 2 同時監聽同一個隊列, 消息被消費。C1 C2 共同爭搶當前的消息隊列內容, 誰先拿到誰負責消費消息 (隱患:高併發情況下, 默認會產生某一個消息被多個消費者共同使用, 可以設置一個開關 (syncronize) 保證一條消息只能被一個消費者使用)。

publish/subscribe 發佈訂閱

每個消費者監聽自己的隊列;

生產者將消息發給 broker,由交換機將消息轉發到綁定此交換機的每個隊列,每個綁定交換機的隊列都將接收到消息。

routing 路由模式

消息生產者將消息發送給交換機按照路由判斷, 路由是字符串 (info) 當前產生的消息攜帶路由字符 (對象的方法), 交換機根據路由的 key, 只能匹配上路由 key 對應的消息隊列, 對應的消費者才能消費消息;

根據業務功能定義路由字符串

從系統的代碼邏輯中獲取對應的功能字符串, 將消息任務扔到對應的隊列中。業務場景: error 通知; EXCEPTION; 錯誤通知的功能; 傳統意義的錯誤通知; 客戶通知; 利用 key 路由, 可以將程序中的錯誤封裝成消息傳入到消息隊列中, 開發者可以自定義消費者, 實時接收錯誤;

topic 主題模式

消息產生者產生消息, 把消息交給交換機

交換機根據 key 的規則模糊匹配到對應的隊列, 由隊列的監聽消費者接收消息消費

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/ADoF5ADO_4eVSrkgKFoG9Q