.Net RabbitMQ实战指南——常用命令

时间:2024-02-01 09:28:42

本问主要介绍rabbitmqctl工具的常用命令。

vhost

一个RabbitMQ服务器可以创建多个虚拟的消息服务器,称之为虚拟主机(virtual host),简称为vhost。vhost之间是绝对隔离的,能将同一个RabbitMQ中的客户分开,又能避免队列和交换器等命名冲突。客户端在连接的时候必须制定一个vhost。RabbitMQ默认创建的vhost为“/”。

rabbitmqctl add_vhost {vhost}  创建一个新的vhost

sudo rabbitmqctl list_vhosts  列出所有vhost

rabbitmqctl delete_vhost {vhost} 删除一个vhost

用户

用户是访问控制(Access Control)的基本单元,且单个用户可以跨越多个vhost进行授权。

rabbitmqctl add_user {username} {password}  创建用户

rabbitmqctl change_password {username} {newpassword} 更改指定用户的密码

 

rabbitmqctl clear_password {username} 清除指定用户密码

rabbitmqctl authenticate_user {username} {password} 验证用户密码

rabbitmqctl delete_user {username}  删除指定用户

rabbitmqctl list_users 列出当前所有用户

可以看到新添加的user1 tags是[],可以调用set_user_tags命令设置用户标签。

rabbitmqctl set_user_tags {username} {tag...}  设置用户角色标签(设置后之前现有的标签都会被删除)

rabbitmq支持的标签有如下:

none:无任何角色。新创建的用户的角色默认为none。

management:可以访问Web管理页面。

policymaker:包含management的所有权限,并且可以管理策略(Policy)和参数(Parameter)。

monitoring:包含management的所有权限,并且可以看到所有连接、信道及节点相关的信息。

administartor:包含monitoring的所有权限,并且可以管理用户、虚拟主机、权限、策略、参数等。administator代表了最高的权限。

权限

为了更好的理解user vhost之间的权限关系,再新增一个vhost(vhost1)。

rabbitmqctl list_user_permissions  {username} 列举权限信息

可以看到mymq账号只有“/”的操作权限

rabbitmqctl set_permissions [-p vhost] {user}{conf}{write}{read}  设置用户在vhost的权限

set_permissions命令参数说明:

vhost:授予用户访问权限的vhost名称,可以设置为默认值,即vhost为“/”。

user:可以访问指定vhost的用户名。

conf:一个用于匹配用户在哪些资源上拥有可配置权限的正则表达式。

write:一个用于匹配用户在哪些资源上拥有可写权限的正则表达式。

read:一个用于匹配用户在哪些资源上拥有可读权限的正则表达式。

注:可配置指的是队列和交换器的创建及删除之类的操作;可写指的是发布消息;可读指与消息有关的操作,包括读取消息及清空整个队列等。

rabbitmqctl list_permissions [-p vhost] 列举vhost权限信息

rabbitmqctl clear_permissions [-p vhost] {username}  清除用户在vhost的权限

其他

rabbitmq-plugins enable [plugin-name]  启动插件

rabbitmq-plugins disable [plugin-name] 关闭插件

如Web插件可以通过rabbitmq-plugins enable rabbitmq_management命令开启。开启之后重启RabbitMQ服务,浏览器访问http://localhost:15672即可打开Web管理插件(第一次可使用默认的guest/guest用户和密码登录)。

rabbitmqctl list_consumers [-p vhost]  列举消费者信息,默认为“/”

 rabbitmqctl status 显示Broker的状态

rabbitmqctl node_health_check 对RabbitMQ节点进行健康检查

rabbitmqctl environment  显示每个运行程序环境中每个变量的名称和值。

rabbitmqctl report  为所有服务器状态生成一个服务器状态报告

以上两个命令输出很复杂有机会在细看了。

list_exchanges [-p vhost] 列举交换机信息,默认为“/”

list_queues  [-p vhost]  列举队列信息,默认为“/”

更多应用和集群相关命令可通过 rabbitmqctl  help查看