文章目录
需求
- 创建用户:为每个项目或业务创建不同的用户。
- 创建虚拟主机:为每个用户创建不同的虚拟主机。
- 测试数据隔离:通过不同用户登录,测试虚拟主机之间的数据隔离。
- 作用:
- 数据隔离:不同虚拟主机中的数据相互独立,彼此隔离。
- 每个虚拟主机内部可以有队列和交换机,且它们之间不会互相干扰。
操作步骤
创建用户
- 进入 RabbitMQ 控制台,点击
Admin
,选择Users
。 - 点击
Add a user
,填写用户信息:- Username :如
nhuan
(可以根据项目命名)。 - Password :如
123
。 - Tag :建议选择
admin
角色,赋予用户最高权限(可以管理所有资源)。
- Username :如
- 创建完成后,新的用户会显示在用户列表中,但是没有虚拟主机访问权限。
- 注意:用户创建后,默认没有访问虚拟主机的权限。


为用户创建虚拟主机
- 登录新创建的用户,并尝试操作虚拟主机:
- 该用户只能操作与自己关联的虚拟主机中的队列和交换机。
- 数据隔离效果:如果用户尝试操作其他虚拟主机中的队列,将会遇到权限错误(即无法操作其他虚拟主机中的数据)。
- 进入 RabbitMQ 控制台,点击
Virtual Hosts
。 - 点击
Add a virtual host
,为用户创建新的虚拟主机:- Name :如
nhuan
。 - Description(可选):可以描述虚拟主机的用途。
- Name :如
- 新创建的虚拟主机会自动分配给当前登录用户。




测试数据隔离
- 登录新创建的用户,并尝试操作虚拟主机:
- 该用户只能操作与自己关联的虚拟主机中的队列和交换机。
- 数据隔离效果:如果用户尝试操作其他虚拟主机中的队列,将会遇到权限错误(即无法操作其他虚拟主机中的数据)。
- 通过右上角选择不同虚拟主机,可以切换视图,只展示该虚拟主机中的数据。
- 创建和操作队列 :用户可以在自己虚拟主机内创建队列并进行消息操作。
- 队列如
simple.queue
可以创建并操作,发送和接收消息不受其他虚拟主机的影响。
- 队列如

总结
- 通过为不同项目或业务创建独立的用户和虚拟主机,实现了 数据隔离。
- 不同的虚拟主机之间的数据不会互相影响,保证了各业务的数据安全性和独立性。
实际操作
- 创建用户 :用户命名如
nhuan
,密码设置为123
,并赋予管理员权限。 - 创建虚拟主机 :为
nhuan
用户创建名为nhuan
的虚拟主机。 - 验证数据隔离 :通过登录不同用户,确保虚拟主机之间的数据隔离效果。
关键点回顾:
- 虚拟主机:实现 RabbitMQ 数据隔离的核心,确保不同业务之间没有干扰。
- 用户与虚拟主机的关系:每个用户可以访问多个虚拟主机,但通常每个虚拟主机与特定用户关联。
- 权限控制:用户通过角色和虚拟主机权限控制,确保数据隔离的安全性。