RabbitMq 常用命令和REST API详解

 更新时间:2025年07月28日 09:48:24   作者:java叶新东老师  
RabbitMQ管理命令涵盖服务启停、用户权限、虚拟主机、队列操作、消息管理及集群配置,包含创建/删除用户、设置角色、绑定交换机与队列、REST API数据查询等关键操作,需注意参数格式和角色唯一性限制,本文给大家介绍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 usersraw_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 userstable 格式化输出
rabbitmqadmin -f bash list usersbash 格式化输出

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

到此这篇关于RabbitMq 常用命令和REST API详解的文章就介绍到这了,更多相关RabbitMq 命令和REST API内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot创建JSP登录页面功能实例代码

    SpringBoot创建JSP登录页面功能实例代码

    这篇文章主要介绍了SpringBoot创建JSP登录页面功能实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-04-04
  • netty中pipeline异常事件分析

    netty中pipeline异常事件分析

    这篇文章主要为大家介绍了netty中pipeline异常事件分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • java json字符串转JSONObject和JSONArray以及取值的实例

    java json字符串转JSONObject和JSONArray以及取值的实例

    这篇文章主要介绍了java json字符串转JSONObject和JSONArray以及取值的实例的相关资料,需要的朋友可以参考下
    2017-05-05
  • java 实现MD5加密算法的简单实例

    java 实现MD5加密算法的简单实例

    这篇文章主要介绍了java 实现MD5加密算法的简单实例的相关资料,这里提供实例帮助大家应用这样的加密算法,需要的朋友可以参考下
    2017-09-09
  • MyBatis Plus 查询结果映射为空对象的问题及解决方案

    MyBatis Plus 查询结果映射为空对象的问题及解决方案

    本文详细探讨了MyBatisPlus中查询结果映射为空对象的问题,通过问题重现、原理分析和多种解决方案,帮助开发者有效应对这一问题,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • Java连接各种数据库的方法

    Java连接各种数据库的方法

    这篇文章主要介绍了Java连接各种数据库的方法,实例分析了java连接MySQL、SQL Server、Sysbase、Oracle、PostgreSQL及DB2等数据库的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • Java使用Spire.XLS for Java实现Excel的行列冻结与解除

    Java使用Spire.XLS for Java实现Excel的行列冻结与解除

    这篇文章主要为大家详细介绍了Java如何使用Spire.XLS for Java实现Excel的行列冻结与解除,文中的示例代码讲解详细,有需要的小伙伴可以了解下
    2025-10-10
  • springboot 增加过滤器方法操作示例

    springboot 增加过滤器方法操作示例

    这篇文章主要介绍了springboot 增加过滤器方法操作,结合实例形式分析了springboot过滤器配置、加载等相关操作技巧,需要的朋友可以参考下
    2019-12-12
  • Java中切面的使用方法举例详解

    Java中切面的使用方法举例详解

    这篇文章主要介绍了Java中切面编程(AOP)的基本概念、原理及实现方式,AOP通过将横切关注点模块化为切面,使代码更易于维护和扩展,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-03-03
  • Java对象传递与返回的细节问题详析

    Java对象传递与返回的细节问题详析

    我们知道这是一个核心概念,在Java中总是按值传递而不是按引用传递,下面这篇文章主要给大家介绍了关于Java对象传递与返回的细节问题的相关资料,需要的朋友可以参考下
    2022-11-11

最新评论