概述
RabbitMQ作為當前流行的消息隊列之一,是基於Erlang語言開發的,對AMQP【Advanced Message Queue,高級消息隊列協議】的開源實現。用於在分布式系統中存儲轉發消息,在易用性、擴展性、高可用性等方面表現不俗。本文主要簡述RabbitMQ的相關概念和簡單控制台介紹,僅供學習分享使用,如有不足之處,還請指正。
消息模型
所有 MQ 產品從模型抽象上來說都是一樣的過程:
消費者(consumer)訂閱某個隊列。生產者(producer)創建消息,然后發布到隊列(queue)中,最后將消息發送到監聽的消費者。

RabbitMQ基本概念
消息模型只是隊列的一種抽象描述,關於RabbitMQ的內部結構,如下所示:

具體名詞解釋如下所示:
- Publisher:消息生產者,即向隊列發布消息的客戶端程序。
- Consumer:消息消費者,即從隊列獲取消息的客戶端程序。
- Broker:表示一個RabbitMQ服務器節點。
- VirtualHost:虛擬主機,表示一批交換器、消息隊列和相關對象。虛擬主機是共享相同的身份認證和加密環境的獨立服務器域。各個虛擬主機之間相互獨立,互不干擾,可以用於區分不同的業務。RabbitMQ 默認的 vhost 是 / 。
- Exchange:交換器,用來接收生產者發送的消息並將這些消息路由給服務器中的隊列。
- Queue:消息隊列,用來保存消息直到發送給消費者。它是消息的容器,也是消息的終點。一個消息可投入一個或多個隊列。消息一直在隊列里面,等待消費者連接到這個隊列將其取走。
- Connection:網絡連接,類似於TCP連接,或者數據庫連接。
- Channel:信道,多路復用連接中的一條獨立的雙向數據流通道。信道是建立在真實的TCP連接內地虛擬連接,AMQP 命令都是通過信道發出去的,不管是發布消息、訂閱隊列還是接收消息,這些動作都是通過信道完成。
- Binding:綁定,用於消息隊列和交換器之間的關聯。
RabbitMQ控制台
新增VirtualHost【虛擬主機】
登錄RabbitMQ控制台,選擇Admin ---> Virtual Hosts --> Add a new virtual host ---> 輸入名稱,描述 ---> Add virtual host 即可新增成功,如下所示:

如上圖所示:RabbitMQ默認的Virtual Host為 / 。Virtual Host需要以【 / 】開頭,本例新增兩個virtual host,主要用於短信和郵件,如下所示:

新增Queue【隊列】
選擇Queues ---> Add a new queue --> 選擇隊列對應的虛擬主機,輸入隊列名稱 ---> Add queue。即可新增一個隊列。如下所示:

本例新增兩個隊列,分別對應兩個虛擬主機,如下所示:

新增用戶
RabbitMQ是需要賬號密碼才能訪問的,默認用戶為guest,如下所示:
Admin -- > Users --> Add a user ---> 輸入用戶名,密碼 ---> Add user 即可新增用戶。

新增成功后,如下所示:

如上所示,新增用戶成功后,並沒有訪問虛擬主機的權限,可以通過修改虛擬主機或者修改用戶進行分配權限。分配成功后,如下所示:

備注
渭城曲 / 送元二使安西
【作者】王維
渭城朝雨浥輕塵,客舍青青柳色新。
勸君更盡一杯酒,西出陽關無故人。
