文章目录
1. Vhost虚拟机
每个RabbitMQ服务器都能创建虚拟主机(virtual host),简称vhost。每个vhost本质上是一个独立的小型RabbitMQ服务器,拥有自己独立的队列、交换器及绑定关系等,并且它拥有自己独立的权限,RabbitMQ默认创建vhost为 “/”。
- 创建vhost:rabbitmqctl add_vhost {vhost}
- 查看所有vhost:rabbitmqctl list_vhosts
- 删除指定vhost:rabbitmqctl delete_vhost {vhost}
2. 用户管理
在RabbitMQ中,用户是访问控制的基本单元,且单个用户可以跨越多个vhost进行授权。
- 创建用户:rabbitmqctl add_user {username} {password}
- 修改密码:rabbitmqctl change_password {username} {password}
- 清除密码:rabbitmqctl clear_password {username}
- 验证用户:rabbitmqctl authenticate_user {username} {password}
- 删除用户:rabbitmqctl delete_user {username}
- 用户列表:rabbitmqctl list_users
3. 权限管理
RabbitMQ中,权限控制是以vhost为单位,创建用户时,将被指定至少一个vhost,默认的vhost是 “/”。
- 授予权限:rabbitmqctl set_permissions [-p vhost] {user}{conf}{write}
{read}
配置项 | 说明 |
---|---|
vhost | 授权用户访问指定的vhost |
user | 用户名 |
conf | 一个用于匹配用户在哪些资源上拥有可配置权限的正则表达式,例如:".*"表示全部 |
write | 一个用于匹配用户在哪些资源上拥有可写权限的正则表达式 ,例如:".*"表示全部 |
read | 一个用于匹配用户在哪些资源上拥有可读权限的正则表达式,例如:".*"表示全部 |
- 收回权限:rabbitmqctl clear_permissions [-p vhost] {username}
- 虚拟主机权限列表:rabbitmqctl list_permissions [-p vhost]
- 查看指定用户权限:rabbitmqctl list_user_permissions {username}
4. 角色分配
rabbitmq的角色有5种类型,命令:rabbitmqctl set_user_tags {username} {tag…}
配置项 | 说明 |
---|---|
none | 无任何角色,新创建的用户默认角色为none |
management | 可以访问web管理页面 |
policymaker | 包含management的所有权限,并可以管理策略和参数 |
monitoring | 包含management的所有权限,并可以看到所有连接、信道及节点相关信息 |
administartor | 包含minitoring的所有权限,并可以管理用户、虚拟主机、权限、策略、参数 |
5. Web端管理
RabbitMQ Management 插件可以提供Web界面来管理RabbitMQ中的虚拟主机、用户、角色、队列、交换器、绑定关系、策略、参数等,也可用于监控RabbitMQ服务的状态及一些统计信息。- 启动插件:rabbitmq-plugins enable rabbitmq_management
- 关闭插件:rabbitmq-plugins disable rabbitmq_management
- 插件列表:rabbitmq-plugins list
6. Rabbitmq 实例管理
启动
service rabbitmq-server start
systemctl start rabbitmq-server
停止
service rabbitmq-server stop
rabbitmqctl stop
systemctl stop rabbitmq-server
重启
service rabbitmq-server restart
systemctl restart rabbitmq-server
查看状态
service rabbitmq-server status
systemctl status rabbitmq-server
rabbitmqctl status
7. 查看队列列表
rabbitmqctl list_queues[-p vhost][queueinfoitem…]
返回列 | 说明 |
---|---|
name | 队列名称 |
durable | 队列是否持久化 |
auto_delete | 队列是否自动删除 |
arguments | 队列参数 |
policy | 应用到队列上的策略名称 |
pid | 队列关联的进程ID |
owner_pid | 处理排他队列连接的进程ID |
exclusive | 队列是否排他 |
8. 查看交换器列表
rabbitmqctl list_exchanges [-p vhost][exchangeinfoitem…]
返回列 | 说明 |
---|---|
name | 交换器名称 |
type | 交换器类型 |
durable | 交换器是否持久化 |
auto_delete | 交换器是否自动删除 |
internal | 是否是内置交换器 |
arguments | 交换器的参数 |
policy | 交换器的策略 |
9. 查看绑定关系的列表
rabbitmqctl list_bindings [-p] [bindinginfoitem…]
返回列 | 说明 |
---|---|
source_name | 消息来源的名称 |
source_kind | 消息来源的类别 |
destination_name | 消息目的地的名称 |
destination_kind | 消息目的地的种类 |
routing_key | 绑定的路由键 |
arguments | 绑定的参数 |
10. 查看连接信息列表
rabbitmqctl list_connections [connectioninfoitem …]
返回列 | 说明 |
---|---|
pid | 与连接相关的进程ID |
name | 连接名称 |
port | 服务器端口 |
host | 服务器主机名 |
peer_port | 服务器对端端口。当一个客户端与服务器连接时,这个客户端的端口就是peer_port |
peer_host | 服务器对端主机名称,或IP |
ssl | 是否启用SSL |
state | 连接状态,包括starting\tning\opening\running\flow\blocking\blocked\closing\closed |
channels | 连接中的信道个数 |
protocol | 使用的AMQP协议版本 |
user | 与连接相关的用户名 |
vhost | 与连接相关的vhost名称 |
timeout | 连接超时时长,单位秒 |
11. 查看信道列表
rabbitmqctl list_channels [channelinfoitem…]
返回列 | 说明 |
---|---|
pid | 与连接相关的进程ID |
connection | 信道所属连接的进程ID |
name | 信道名称 |
number | 信道的序号 |
user | 与连接相关的用户名 |
vhost | 与连接相关的vhost名称 |
transactional | 信道是否处于事务模式 |
confirm | 信道是否处于 publisher confirm模式 |
consumer_count | 信道中的消费者个数 |
messages_unacknowledged | 已投递但是还未被ack的消息个数 |
messages_uncommitted | 已接收但是还未提交事务的消息个数 |
acks_uncommitted | 已ack收到但是还未提交事务的消息个数 |
messages_unconfirmed | 已发送但是还未确认的消息个数 |
perfetch_count | 消费者的Qos个数限制,0表示无上限 |
global_prefetch_count | 整个信道的Qos个数限制 |
12. 查看消费者列表
rabbitmqctl list_consumers [-p vhost]
返回列 | 说明 |
---|---|
arguments | 参数 |
channel_pid | 信道进程id |
consumer_tag | 消费者标记 |
prefetch_count | 消费者的Qos个数限制,0表示无上限 |
queue_name | 队列名称 |