1.vhost 介紹
每一個RabbitMQ服務器都能創建虛擬消息服務器,我們稱之爲虛擬主機。每一個vhost本質上是一個mini版的RabbitMQ服務器,擁有自己的交換機、隊列、綁定等,擁有自己的權限機制。
vhost之於Rabbit就像虛擬機之於物理機一樣。他們通過在各個實例間提供邏輯上分離,允許爲不同的應用程序安全保密的運行數據,這很有,它既能將同一個Rabbit的衆多客戶區分開來,又可以避免隊列和交換器的命名衝突。
RabbitMQ提供了開箱即用的默認的虛擬主機“/”,如果不需要多個vhost可以直接使用這個默認的vhost,通過使用缺省的guest用戶名和guest密碼來訪問默認的vhost。
vhost之間是相互獨立的,這避免了各種命名的衝突,就像App中的沙盒的概念一樣,每個沙盒是相互獨立的,且只能訪問自己的沙盒,以保證非法訪問別的沙盒帶來的安全隱患。
2.vhost 創建 刪除
RabbitMq 安裝路徑 ./sbin 目錄中的rabbitmqctl工具來創建,如果是docker直接進入容器即可
# 創建vhost,用來區分不同環境的隊列
rabbitmqctl add_vhost [vhost_name]
# 刪除vhost
rabbitmqctl delete_vhost [vhost_name]
# 查看
rabbitmqctl list_vhosts
# 配置最大連接限制,0:表示不可用,-1:無限制
rabbitmqctl set_vhost_limits -p vhost_name '{"max-connections": 256}'
# 配置隊列最大數,-1:無限制
rabbitmqctl set_vhost_limits -p vhost_name '{"max-queues": 1024}'
3.vhost 授權
# 創建賬號
rabbitmqctl add_user root root123456
# 設置用戶角色
rabbitmqctl set_user_tags root administrator
# 設置用戶權限
rabbitmqctl set_permissions -p [vhost_name] root ".*" ".*" ".*"
4.vhost 配置
# Spring
spring:
# rabbitmq
rabbitmq:
host: 192.168.6.1
# rabbitmq的端口
port: 5672
# rabbitmq的用戶名
username: root
# rabbitmq的用戶密碼
password: root123456
# 虛擬主機,用來區分不同環境的隊列
virtual-host: dev
#開啓重試機制
listener:
retry:
enabled: true
#重試次數,默認爲3次
max-attempts: 3