RabbitMq 常用命令和REST API

服务管理相关

启动: 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角色有以下几个:

  1. 超级管理员(administrator):可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作
  2. 监控者(monitoring): 可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
  3. 策略制定者(policymaker): 可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。
  4. 普通管理者(management): 仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。
  5. policymaker:包含managerment所有权限,并且可以管理策略(Policy)和参数(Parameter)
  6. 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
相关推荐
久念祈2 小时前
C++ - 仿 RabbitMQ 实现消息队列--服务端核心模块实现(四)
分布式·rabbitmq
白鹭8 小时前
基于LNMP架构的分布式个人博客搭建
linux·运维·服务器·网络·分布式·apache
不辉放弃8 小时前
kafka的消费者负载均衡机制
数据库·分布式·kafka·负载均衡
java叶新东老师10 小时前
三、搭建springCloudAlibaba2021.1版本分布式微服务-springcloud loadbalancer负载均衡
分布式·spring cloud·微服务
愿你天黑有灯下雨有伞11 小时前
Spring Boot集成RabbitMQ终极指南:从配置到高级消息处理
spring boot·rabbitmq·java-rabbitmq
沉下去,苦磨练!11 小时前
kafka的部署和jmeter连接kafka
分布式·jmeter·kafka
在未来等你12 小时前
RabbitMQ面试精讲 Day 5:Virtual Host与权限控制
中间件·面试·消息队列·rabbitmq
shinelord明13 小时前
【计算机网络架构】网状型架构简介
大数据·分布式·计算机网络·架构·计算机科学与技术
物联网软硬件开发-轨物科技16 小时前
【轨物洞见】光伏逆变器数据:分布式电站价值回归的“第一块多米诺骨牌”
分布式
java叶新东老师18 小时前
四、搭建springCloudAlibaba2021.1版本分布式微服务-加入openFeign远程调用和sentinel流量控制
分布式·微服务·sentinel