每一个RabbitMQ服务器都能创建虚拟消息服务器,我们称之为虚拟主机。每一个vhost本质上是一个mini版的RabbitMQ服务器,拥有自己的交换机、队列、绑定等,拥有自己的权限机制。
vhost之于Rabbit就像虚拟机之于物理机一样。他们通过在各个实例间提供逻辑上分离,允许为不同的应用程序安全保密的运行数据,这很有,它既能将同一个Rabbit的众多客户区分开来,又可以避免队列和交换器的命名冲突。
RabbitMQ提供了开箱即用的默认的虚拟主机“/”,如果不需要多个vhost可以直接使用这个默认的vhost,通过使用缺省的guest用户名和guest密码来访问默认的vhost。
vhost之间是相互独立的,这避免了各种命名的冲突,就像App中的沙盒的概念一样,每个沙盒是相互独立的,且只能访问自己的沙盒,以保证非法访问别的沙盒带来的安全隐患。
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}'
# 创建账号
rabbitmqctl add_user root root123456
# 设置用户角色
rabbitmqctl set_user_tags root administrator
# 设置用户权限
rabbitmqctl set_permissions -p [vhost_name] root ".*" ".*" ".*"
# 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