我们在第一次安装RabbitMQ的时候,可能会通过Web页面来管理RabbitMQ。默认情况下,我们第一次使用的默认用户是guest。登录成功后,可以在admin选项卡中查看所有用户:可以看到每个用户都有一个Canaccessvirtualhosts属性。这个属性是什么意思?宋哥今天就来和大家分享一下。1.多租户RabbitMQ中有一个概念叫多租户。你怎么理解的?我们安装了一个RabbitMQ服务器,每个RabbitMQ服务器可以创建很多虚拟的消息服务器。这些虚拟消息服务器就是我们所说的虚拟主机(virtualhost),一般简称为vhost。从本质上讲,每个vhost都是一个独立的小型RabbitMQ服务器。这个vhost会有自己的消息队列、消息开关和对应的绑定关系等,有自己独立的权限。queue和Switch之间不能绑定,这样skill才能保证安全运行,避免命名冲突。我们不需要特别关注vhost。它就像普通的物理RabbitMQ。不同的虚拟主机可以提供逻辑分离,保证不同的应用消息队列可以安全独立的运行。对我来说,应该怎么看待vhost和RabbitMQ的关系呢?RabbitMQ相当于一个Excel文件,vhost是Excel文件中的一个sheet。我们所有的操作都是在一张纸上进行的。vhost本质上是AMQP协议中的一个概念。2.通过命令行创建vhost先来看看如何通过命令行创建vhost。因为这里的RabbitMQ是安装docker的,所以我们先进入docker容器:dockerexec-itsome-rabbit/bin/bash然后执行下面的命令创建一个名为/myvh的vhost:rabbitmqctladd_vhostmyvh最后的执行结果如下:ThenExistingvhosts可以通过如下命令查看:rabbitmqctllist_vhosts当然这个命令还可以加上name和tracing两个选项,name表示vhost的名字,tracing表示是否使用tracing功能(tracing可以帮助跟踪流入流出的数据)RabbitMQ中的消息),如下图所示:可以通过以下命令删除虚拟主机:rabbitmqctldelete_vhostmyvh删除虚拟主机时,与该虚拟主机相关的所有消息队列、交换机和绑定关系都会被删除。为用户设置vhost:rabbitmqctlset_permissions-pmyvhguest".*"".*"".*"第一个参数好说,后三个".*"含义如下:所有资源(创建/删除消息队列、创建/删除交换等)。用户对所有资源具有写入权限(发送消息)。用户拥有所有资源的读取权限(消费消息、清空队列等)。禁止用户访问某个虚拟主机:rabbitmqctlclear_permissions-pmyvhguest3。在管理页面创建vhost当然我们也可以在网页管理vhost:在admin选项卡中,点击右侧的VirtualHosts,如下:然后点击下方的Addanewvirtualhost,即可添加新的vhost:进入某个vhost后,可以修改其权限,删除一个vhost,如下图:4.用户管理因为vhost通常和用户一起出现,这里我也顺便说说用户相关的操作。添加一个用户,用户名为javaboy,密码为123,方法如下:rabbitmqctladd_userjavaboy123可以通过以下命令修改用户密码(将javaboy的密码修改为123456):rabbitmqctlchange_passwordjavaboy123456可以通过以下方式验证用户密码command:rabbitmqctlauthenticate_userjavaboy123456验证成功和验证失败情况如下:可以通过以下命令查看当前所有用户:第一列是用户名,第二列是用户角色。关于用户角色,我在之前的文章中已经讲过了,这里不再赘述。传送门:RabbitMQ管理页面使用方法。给用户设置角色的命令如下(javaboy设置管理员角色):rabbitmqctlset_user_tagsjavaboyadministrator最后,删除用户的命令如下:rabbitmqctldelete_userjavaboy来自微信公众号“江南一点鱼”,您可以通过以下方式关注二维码。转载本文请联系江南一点鱼公众号。
