场景:线下测试经常会有多租户配置。
数据库通过容器的方式达到隔离;
redis通过16个database,也达到了隔离;
rabbitmq是否也可以进行隔离,而不是部署多个rabbitmq中间件服务?
在此,引入rabbitmq的v_host虚拟主机,一样也可以达到隔离的目的;
1、创建脚本
## 1、创建兰州的rabbitmq虚拟主机v_lanzhou,为了规范化,建议以v_开头
rabbitmqctl add_vhost v_lanzhou
## 2、创建兰州用户,并设置用户和密码为lanzhou
rabbitmqctl add_user lanzhou lanzhou
## 3、为兰州用户配置兰州虚拟主机的所有权限
rabbitmqctl set_permissions -p v_lanzhou lanzhou ".*" ".*" ".*"
rabbitmqctl set_permissions -p v_lanzhou lanzhou "^error.*" ".*log$" ".*"
## 4、如果想让lanzhou用户能登录管理端,需要将其设置为管理员;如果不设置,客户端可以连接lanzhou用户,但是lanzhou用户不可以登录管理端;
rabbitmqctl set_user_tags lanzhou administrator
2、辅助脚本
## 查看虚拟主机列表
rabbitmqctl list_vhosts
## 查看用户列表:
rabbitmqctl list_users
## 删除虚拟主机
rabbitmqctl delete_vhost lanzhou
## 查看拥有某虚拟主机的用户列表
rabbitmqctl list_permissions -p v_lanzhou
## 查看某用户列表拥有哪些虚拟主机的权限
rabbitmqctl list_user_permissions lanzhou
3、客户端连接
spring:
rabbitmq:
host: 100.60.9.200
virtual-host: v_lanzhou
port: 5672
username: lanzhou
password: lanzhou