服务管理相关
启动: service rabbitmq-server start 或 rabbitmq-service start
关闭: service rabbitmq-server stop 或 rabbitmq-service stop
重启: service rabbitmq-server restart
查看状态: rabbitmqctl status
用户相关
创建用户
后面2个参数是用户名和密码
rabbitmqctl add_user userName password
修改密码
rabbitmqctl change_password userName newPassword
校验密码
校验账号和密码是否匹配
rabbitmqctl authenticate_user userName "password"
- 若校验正确会打印出
Success
的字样 - 若校验失败(账号或密码错误)会打印出
Error
的字样
展示所有用户
除了用户名之外,还会显示每个用户所属的角色
rabbitmqctl list_users
删除用户
rabbitmqctl delete_user userName
清除密码
rabbitmqctl clear_password {userName}
角色相关
用户角色可通过命令:rabbitmqctl list_users
查看
rabbitmq角色有以下几个:
超级管理员(administrator)
:可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作监控者(monitoring)
: 可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)策略制定者(policymaker)
: 可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。普通管理者(management)
: 仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。policymaker
:包含managerment所有权限,并且可以管理策略(Policy)和参数(Parameter)none
:无角色, 无法登陆管理控制台,通常就是普通的生产者和消费者。
设置用户角色
将userName设为administartor角色,当角色不存在时,会自动创建角色,一个用户只能有一个角色;
在设置角色时administartor
后面不能有空格,否则空格也算是一个字符,rabbitmq不会忽略空格
rabbitmqctl set_user_tags userName administartor
设置多个角色(无效:设置后不是2个权限,而是一个权限,权限名称为:monitoring policymaker)
rabbitmqctl set_user_tags userName monitoring policymaker
Vhost管理
查看所有虚拟主机:rabbitmqctl list_vhosts
添加虚拟主机:rabbitmqctl add_vhost vhostname
删除虚拟主机:rabbitmqctl delete_vhost vhostname
权限管理
设置用户权限
-p /
表示指定vHosts
rabbitmqctl set_permissions -p / root ".*" ".*" ".*"
查看用户权限
查看所有已设置了权限的用户(无权限的用户不展示)
rabbitmqctl list_user_permissions
查看指定用户的权限
rabbitmqctl list_user_permissions username
清除用户权限
-p /
表示指定vHosts
rabbitmqctl clear_permissions -p / username
web管理相关
开启/关闭web管理页面
# 开启web管理页面
rabbitmq-plugins enable rabbitmq_management
# 关闭web管理页面
rabbitmq-plugins disable rabbitmq_management
插件相关
查看插件
rabbitmq-plugins list
应用管理
应用和节点都关闭 :rabbitmqctl stop
关闭应用:rabbitmqctl stop_app
启动应用:rabbitmqctl start_app
队列管理
查看所有队列
rabbitmqctl list_queues
清除所有队列
清楚之前需要先执行rabbitmqctl stop_app
命令
rabbitmqctl reset
强制清除队列
rabbitmqctl force_reset
集群管理
查看集群状态: rabbitmqctl cluster_status
摘除节点: rabbitmqctl forget_cluster_node [--offline]
组成集群命令: rabbitmqctl join_cluster <clusternode> [--ram]
修改节点存储形式: rabbitmqctl change_cluster_node_type disc | ram
修改节点名称: rabbitmqctl rename_cluster_node oldnode1 newnode1 [oldnode2 newnode2] [oldnode3 newnode3...]
信息查看
查看所有连接:rabbitmqadmin list connections
概览 Overview: rabbitmqadmin show overview
查看所有节点 Node:rabbitmqadmin list nodes
查看所有通道 Channel:rabbitmqadmin list channels
查看所有消费者 Consumer:rabbitmqadmin list consumers
查看所有路由 Exchange:rabbitmqadmin list exchanges
查看所有路由与队列的关系绑定 Binding:rabbitmqadmin list bindings
rabbitmqadmin 命令
- -u:用户名
- -p:密码
查询命令
查看所有的交换机:rabbitmqadmin -u root -p woaini list exchanges
查看所有的队列:rabbitmqadmin -u root -p woaini list queues
查看所有的交换机和队列的绑定关系:rabbitmqadmin -u root -p woaini list bindings
查看所有的用户:rabbitmqadmin -u root -p woaini list users
查看所有的权限信息:rabbitmqadmin -u root -p woaini list permissions
查看所有的连接信息:rabbitmqadmin -u root -p woaini list connections
查看所有的通道信息:rabbitmqadmin -u root -p woaini list channels
创建交换机
- name:交换机名称
- durable:是否持久化
- auto_delete:是否自动删除
- type:交换机类型
rabbitmqadmin -u root -p woaini declare exchange name=exchange_name_1 durable=true auto_delete=false type=direct
创建队列
rabbitmqadmin -u root -p woaini declare queue name=queue_name_1 durable=true auto_delete=false
绑定队列和交换机
- source:需要绑定的交换机名称
- destination:(目标)需要绑定的队列名称
执行前必须先创建队列和交换机,否则会报错:*** Not found: /api/bindings/%2F/e/exchange_name_1/q/queue_name_1
在 direct 交换机下,队列名称和routingKey名称必须一致,否则发送消息时无法路由
rabbitmqadmin -u root -p woaini declare binding source=exchange_name_1 destination=queue_name_1 routing_key=queue_name_1
发送消息
rabbitmqadmin -u root -p woaini publish routing_key=routing_key_1 payload="hello yexindong"
查看队列中的消息
可以查看到刚刚发送的消息
rabbitmqadmin -u root -p woaini get queue=queue_name_1
其他命令
命令 | 解释 |
---|---|
rabbitmqadmin list users | 查看所有用户 User |
rabbitmqadmin list users name | 查看所有用户名 Username |
rabbitmqadmin list users tags | 查看所有用户角色 |
rabbitmqadmin list vhosts | 查看所有虚拟主机 |
rabbitmqadmin list connections | 查看所有连接 |
rabbitmqadmin list exchanges | 查看所有路由 Exchange |
rabbitmqadmin list bindings | 查看所有路由与队列的关系绑定 Binding |
rabbitmqadmin list permissions | 查看所有角色的权限 Permission |
rabbitmqadmin list channels | 查看所有通道 Channel |
rabbitmqadmin list consumers | 查看所有消费者 Consumer |
rabbitmqadmin list queues | 查看所有消息队列 Queue |
rabbitmqadmin list nodes | 查看所有节点 Node |
rabbitmqadmin show overview | 概览 Overview |
rabbitmqadmin list bindings source destination_type destination properties_key | 查看所有路由与队列的关系绑定的详细信息 Binding |
rabbitmqadmin declare queue name=test durable=true | 定义一个队列queue,durable=true代表持久化打开。 |
rabbitmqadmin declare exchange name=my.fanout type=fanout | 定义一个Fanout路由 |
rabbitmqadmin declare exchange name=my.direct type=direct | 定义一个Direct路由 |
rabbitmqadmin declare exchange name=my.topic type=topic | 定义一个Topic路由 |
rabbitmqadmin declare binding source=my.fanout destination=test routing_key=first | 定义 binding |
rabbitmqadmin publish routing_key=test payload=”hello world” | 发布一条消息 |
rabbitmqadmin publish routing_key=my.test exchange=my.topic payload=”hello world” | 使用路由转发消息 |
rabbitmqadmin get queue=test requeue=true | 查看消息,不消费 |
rabbitmqadmin get queue=test requeue=false | 查看消息,并消费 |
rabbitmqadmin purge queue name=test | 删除队列中的所有消息 |
rabbitmqadmin delete queue name=hello | 删除消息队列 Queue |
rabbitmqadmin delete user name=test | 删除用户 User |
rabbitmqadmin delete exchange name=test | 删除路由器 Exchange |
rabbitmqadmin delete binding source=’kk’ destination_type=queue destination=test properties_key=test | 删除路由器与消息队列的关系绑定 Binding |
rabbitmqadmin -f raw_json list users | raw_json 格式化输出 |
rabbitmqadmin -f long list users | 格式化输出 |
rabbitmqadmin -f pretty_json list users pretty_json | 格式化输出 |
rabbitmqadmin -f kvp list users | 格式化输出 |
rabbitmqadmin -f tsv list users | 格式化输出 |
rabbitmqadmin -f table list users | table 格式化输出 |
rabbitmqadmin -f bash list users | bash 格式化输出 |
REST API
查看所有队列统计数据
-i 表示显示响应头信息。
-u 指定用户密码
curl -i -u root:woaini http://localhost:15672/api/queues
查看虚拟主机 myvh 下 hello-queue 队列的数据统计
curl -i -u root:woaini http://localhost:15672/api/queues/myvh/hello-queue
查看虚拟主机 / 下 hello-queue 队列的数据统计
需要将 /
进行转义后结果为:%2f
curl -i -u root:woaini http://localhost:15672/api/queues/%2f/hello-queue
创建队列
在 /myvh 虚拟主机下创建一个名为 javaboy-queue 的队列
curl -i -u root:woaini -XPUT -H "Content-Type:application/json" -d '{"auto_delete":false,"durable":true}' http://localhost:15672/api/queues/myvh/javaboy-queue
查看当前连接信息
curl -i -u root:woaini http://localhost:15672/api/connections
查看当前用户信息
curl -i -u root:woaini http://localhost:15672/api/users
创建用户
创建一个名为 zhangsan,密码是 123 ,角色是 administrator 的用户。
curl -i -u root:woaini -H "{Content-Type:application/json}" -d '{"password":"123","tags":"administrator"}' -XPUT http://localhost:15672/api/users/zhangsan
为新用户设置 vhost
将名为 zhangsan 的用户设置到名为 myvh 的 vhost 下:
curl -i -u root:woaini -H "{Content-Type:application/json}" -d '{"configure":".*","write":".*","read":".*"}' -XPUT http://localhost:15672/api/permissions/myvh/zhangsan