創建資源
更新時間 2023-07-03 21:27:23
最近更新時間: 2023-07-03 21:27:23
分享文章
本節介紹了新應用接入分布式消息服務RabbitMQ實例時需要創建的資源。
背景信息
一個新的應用接入消息隊列需要先創建相關資源,包括:Vhost、User、Exchange、Queue。
操作步驟
創建Vhost
1.登錄消息隊列rabbitMQ的控制臺。
2.進入相應實例的管理頁面。
3.點擊左側選項卡的集群管理,然后進入主界面的虛擬主機。
4.點擊新建,輸入虛擬主機名稱即可新增Vhost。

設置Vhost名稱時,請注意有如下要求:
- Vhost名稱只能包含字母、數字、短劃線(-)、下劃線(_)。
- Vhost名稱長度限制在1~64個字符,長度超過64個字符將被自動截取。
- Vhost創建成功后,Vhost名稱不可修改。
創建User并且配置Vhost的權限
1.登錄消息隊列rabbitMQ的控制臺。
2.進入相應實例的管理頁面。
3.點擊左側選項卡的集群管理,然后進入主界面的“用戶界面”。


4.創建成功后給
用戶配置vhost的權限,選擇目標虛擬主機。

5.創建成功后給用戶配置vhost的權限,選擇目標虛擬主機,然后進入主機詳情,點擊權限tab頁,點擊新增權限。

6.創建成功后給用戶配置vhost的權限,選擇目標虛擬主機,然后進入主機詳情,點擊權限tab頁,點擊新增權限。

Tips:權限配置規則為正則表達式。例如 .* 表示所有權限。
如'^(amq.gen.*|amq.default) '可以匹配server生成的和默認的exchange,'^ '不匹配任何資源。
創建Exchange
當創建Vhost時,會創建5個默認的Exchange,如需要額外創建Exchange,可進入實例列表的交換器選項卡進行新建。

參數說明如下表所示
| 參數 | 描述 |
|---|---|
| 虛擬主機 | 選擇創建交換器所屬的虛擬主機 |
| 名稱 | 交換器名稱。以amq.開頭的為保留字段,因此不能使用。例如:。 |
| 類型 | Exchange類型。取值: |
| 類型 | direct:該類型路由規則會將消息路由到Binding Key與Routing Key完全匹配的Queue中。 |
| 類型 | topic:該類型與direct類型相似。Topic Exchange路由規則沒有Direct Exchange那么嚴格, 支持模糊匹配和多條件匹配,即該類型Exchange使用Routing Key模式匹配和字符串比較的方式將消息路由至綁定的Queue中。 |
| 類型 | fanout:該類型路由規則非常簡單,會把所有發送到該Exchange的消息路由到所有與它綁定的Queue中,相當于廣播功能。 |
| 類型 | headers:該類型與direct類型相似。Headers Exchange使用Headers屬性代替Routing Key進行路由匹配,在綁定Headers Exchange和Queue時,設置綁定屬性的鍵值對;在向Headers Exchange發送消息時,設置消息的Headers屬性鍵值對,使用消息Headers屬性鍵值對和綁定屬性鍵值對比較的方式將消息路由至綁定的Queue。 |
| 類型 | x-delayed-message:通過聲明該類Exchange,您可以自定義消息的Header屬性x-delay來指定消息延時投遞的時間段,單位為毫秒。消息將在x-delay中定義的時間段后,根據路由規則被投遞到對應的Queue。路由規則取決于x-delayed-type中指定的Exchange路由類型。 |
| x-delayed-type | 當Exchange類型為x-delayed-message時,需要配置此參數,以指定Exchange的路由類型。 |
| 是否持久化 | 交換器是否持久化到磁盤 |
| 是否自動刪除 | 如果是,交換器將在至少一個隊列或交換器綁定到該交換器,然后所有隊列或交換器都已解除綁定時刪除。 |
| 是否內置 | 如果是,客戶端不能直接發布到這個交換器。它只能與其他交換器綁定使用。 |
| 其他參數 | Alternate exchange:備份交換器是為了實現沒有路由到隊列的消息,聲明交換機的時候添加屬性alternate-exchange,聲明一個備用交換機,一般聲明為fanout類型,這樣交換機收到路由不到隊列的消息就會發送到備用交換機綁定的隊列中。 |
創建Queue
可以在代碼中聲明,會自動創建隊列。也可以進入控制臺,在實例列表的隊列選項卡進行新建。

參數說明如下表所示:
| 參數 | 描述 |
|---|---|
| 虛擬主機 | 選擇創建隊列所屬的虛擬主機 |
| 名稱 | 隊列的名稱。以amq.開頭的為保留字段,因此不能使用。例如:amq.test。 |
| 存儲節點 | 隊列數據存儲節點 |
| 是否持久化 | 隊列元數據是否持久化到磁盤 |
| 是否自動刪除 | 最后一個Consumer取消訂閱后,Queue是否自動刪除。 |
| 其他參數 | Message TTL-消息過期時間:number型(單位:ms) Auto expire-隊列過期時間,過期后隊列自動刪除:number型(單位:ms) Max length-隊列能保存的最大消息數:number型(單位:個) Max length bytes-隊列能保存的最大消息量:number型(單位:字節) Overflow behaviour 超過隊列的最大設定值后消息接收策略:drop-head,reject-publish drop-head:刪除頭部消息,一般就是最早發送的消息,保證隊列可用 reject-publish:拒絕接受新的消息,保證消息不丟失 Dead letter exchange死信交換器名稱 Dead letter routing key死信路由鍵 Maximum priority隊列最大優先級:要開啟消息的優先級,必須設置消息所在隊列的優先級 Lazy mode隊列惰性模式:default、lazy default:默認值,普通隊列 lazy:惰性隊列,盡可能將消息存到磁盤中,會引起I/O操作比較多,內存消耗極少(有大量堆積的持久化消息建議使用) Master Locator 隊列保存位置:client-local、min-masters、random client-local:隊列創建時所用連接的節點 min-masters: 集群中節點主數量最少的節點 random:由rabbitmq服務器隨機指定一個節點 |