2.4.1 用户管理
RabbitMQ支持多租户,多个系统可以同时使用一个RabbitMQ。
什么是多租户:一种软件架构设计模式,允许多个租户(用户、组织或客户)共享同一套应用程序或系统实例,同时确保每个租户的数据和配置是隔离的。比如一张表增加一个companyId,那么就是不同的公司共用一套代码+数据库,但是又做了数据隔离
公司内的多个不同项目同时使用。这个时候为了避免互相干扰, 我们会利用虚拟主机进行隔离,将不同项目隶属不同的虚拟主机。一般会做两件事情:
● 给每个项目创建独立的运维账号,将管理权限分离。
● 给每个项目创建不同的虚拟主机,将每个项目的数据隔离。
下边学习用户管理和虚拟主机的配置。
点击Admin选项卡,首先会看到RabbitMQ控制台的用户管理界面:
这里的用户都是RabbitMQ的管理或运维人员。目前只有安装RabbitMQ时添加的itheima这个用户。仔细观察用户表格中的字段,如下:
● Name:itheima,也就是用户名
● Tags:administrator,说明itheima用户是超级管理员,拥有所有权限
● Can access virtual host: /,可以访问的virtual host,这里的/是默认的virtual host
下边我们给黑马商城创建一个新的用户,命名为hmall,密码123,注意选择adminstrator
你会发现此时hmall用户没有任何virtual host的访问权限:
接下来我们来给hmall用户授权。
2.4.2 虚拟主机
下边配置虚拟主机。
我们先退出登录:
切换到刚刚创建的hmall用户登录,然后点击Virtual Hosts菜单,进入virtual host管理页:
可以看到目前只有一个默认的virtual host,名字为 /。
我们可以给黑马商城项目创建一个单独的virtual host,而不是使用默认的/。
创建完成后如图:
由于我们是登录hmall账户后创建的virtual host,因此回到users菜单,你会发现当前用户已经具备了对/hmall这个virtual host的访问权限了:
此时,点击页面右上角的virtual host下拉菜单,切换virtual host为 /hmall:
然后再次查看queues选项卡,会发现之前的队列已经看不到了:
这就是基于virtual host 的隔离效果。
2.4.3 测试
下边我们用hmall用户及新创建虚拟主机。
修改publisher及consumer的application.yml
spring:
rabbitmq:
host: 192.168.101.68 # 你的虚拟机IP
port: 5672 # 端口
virtual-host: /hmall # 虚拟主机
username: hmall # 用户名
password: 123 # 密码
重新进行收发消息的测试,发现消息发发放到了virtual-host: /hmall 下的队列,如下图:
再启动consumer服务接收消息。