Rabbit MQ
介紹
Rabbit MQ是一個消息隊列組件,使用Erlang開發,消息隊列中間件是分佈式系統中重要的組件,主要解決應用耦合,異步消息,流量削鋒等問題
安裝使用
- 安裝Erlang (RabbitMQ基於Erlang開發) Downloads - Erlang/OTP
- 配置Erlang環境
- erl -version 驗證
- 安裝rabbitMQDownloading and Installing RabbitMQ — RabbitMQ
- 進去rabbitMQ安裝目錄的sbin目錄裏面
- 輸入
rabbitmq-plugins enable rabbitmq_management
命令安裝管理頁面的插件 - 啓動rabbitmq-server.bat
- 進入管理頁面http://localhost:15672 ,賬號密碼默認是:guest/guest
組件名稱
- exchange(交換機):按照一定的規則將消息路由轉發到隊列,並且可以對消息進行過濾,交換機不存儲數據。
- queue(隊列):存儲消息,消息到達後轉發到消費者。
RabbitMQ 的工作模式
- 簡單隊列模式(Simple Queue)
- 工作隊列模式(Work Queues)
- 發佈訂閱模式(Publish/Subscribe)
- 路由模式(Routing)
- 主題模式(Topic)
簡單隊列模式
最簡單的隊列模式,一個生產者一個消費者,主要用於處理異步任務
工作隊列模式
一個生產者生產數據往隊列裏放,會有多個消費者消費隊列裏面的數據,消息不會被重複消費
借大佬圖片用一下🦌
在消息過多,想增加執行效率的時候使用
訂閱發佈模式
生產者將消息發給交換機,每個消費者綁定一個隊列,交換機會將消息轉發到每一個綁定的隊列裏面去,每個隊列都會收到這個消息,每個消費者都會消費到這條消息,即消息會被重複消費。
借大佬圖片用一下🦌
路由模式
路由模式是一種特殊的發佈訂閱模式,交換機可以根據不同的規則將消息路由到不同的隊列中保存
可以用來做日誌級別的區分處理
topic 通配符模式
跟路由模式差不多,只不過路由方式可以換成通配符
死信隊列
死信隊列是用來接收過期消息,接收被拒絕的消息
拒絕的消息:
- 消息超長
- 消息過期
延遲隊列
延遲隊列可以延遲消費消息
實現方式:
- 設置消息過期時間
- 消息過期通過死信狀態機將消息放入死信隊列
- 死信隊列通過狀態機將消息發送到正常的隊列裏面消費