本问主要介绍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查看