消息隊列_RabbitMQ中的五種工作模式

在介紹RabbitMQ的工作模式之前,需求瞭解RabbitMQ中的角色。因爲工作模式中的一些概念和角色息息相關。

RabbitMQ中的角色

1. 生成者
    與RabbitMQ建立連接後,向RabbitMQ發送消息的客戶端,稱爲生成者,顧名思義,生成者主要是生產消息的。這裏需要注意,生產這不是直接將消息發送到隊列的,而是要經過Exchange(交換機),由Exchange交換機負責將消息發送到不同Queue(隊列)。而Exchange模塊是由Erlang語言編寫的,該語言對於開發高併發和分佈式應用具有天生的優勢。
2. 消費者
    消息生產出來,總得有人消費。而從隊列中取消息的客戶端,稱之爲消費者。
3. 無角色
    RabbitMQ中還存在不生產消息,也不消費消息的角色,它的作用主要是用來聲明組件。可以通過它創建自定義的交換機和隊列。

簡單模式

每一個隊列,只被一個消費端監聽,這種模式成爲簡單模式。
在這裏插入圖片描述
應用場景:發短信、發郵件。

爭搶模式

一個隊列,同時被多個消費者監聽。
在這裏插入圖片描述
應用場景:秒殺、搶紅包。

路由模式

前面簡單模式和爭搶模式,着重強調的是消費端。而路由模式,看到“路由”二字,大家也許會猜到,這個和交換機有關了。
路由模式指交換機通過消息的key將消息發送到指定的隊列。
在這裏插入圖片描述
應用場景:
1.將手機號作爲路由key ,將其發送到指定隊列,由持有該手機號的客戶端監聽隊列中的手機短信。
2.將系統的異常消息發送到指定隊列,由負責日誌記錄的應用記錄日誌。

發佈訂閱模式

這裏強調的也是交換機,將受到的消息發送給多個隊列,而不單單指一個。
在這裏插入圖片描述
應用場景:短信羣發、郵件羣發。

主題模式

和路由模式很類似,區別在於主題模式的路由規則是通配匹配。指交換機通過消息的key將消息發送到某類隊列中(類似於快遞分揀)。
在這裏插入圖片描述
應用場景:物流分揀。

總結

五種工作模式中,前兩種(簡單模式、爭搶模式)和消費者相關,後三種(路由模式、發佈訂閱模式、主題模式)和交換機相關。需要根據不同的場景使用不用的工作模式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章