RabbitMq 常用命令和REST API

发布时间:2022-04-12 16:14:05 作者:yexindonglai@163.com 阅读(2320)

服务管理相关

启动: service rabbitmq-server start 或 rabbitmq-service start
关闭: service rabbitmq-server stop 或 rabbitmq-service stop
重启: service rabbitmq-server restart
查看状态: rabbitmqctl status

用户相关

创建用户

后面2个参数是用户名和密码

  1. rabbitmqctl add_user userName password
修改密码
  1. rabbitmqctl change_password userName newPassword
校验密码

校验账号和密码是否匹配

  1. rabbitmqctl authenticate_user userName "password"
  • 若校验正确会打印出Success的字样
  • 若校验失败(账号或密码错误)会打印出Error的字样
展示所有用户

除了用户名之外,还会显示每个用户所属的角色

  1. rabbitmqctl list_users
删除用户
  1. rabbitmqctl delete_user userName
清除密码
  1. 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不会忽略空格

  1. rabbitmqctl set_user_tags userName administartor

设置多个角色(无效:设置后不是2个权限,而是一个权限,权限名称为:monitoring policymaker)

  1. rabbitmqctl set_user_tags userName monitoring policymaker

Vhost管理

查看所有虚拟主机:rabbitmqctl list_vhosts
添加虚拟主机:rabbitmqctl add_vhost vhostname
删除虚拟主机:rabbitmqctl delete_vhost vhostname

权限管理

设置用户权限

-p / 表示指定vHosts

  1. rabbitmqctl set_permissions -p / root ".*" ".*" ".*"
查看用户权限

查看所有已设置了权限的用户(无权限的用户不展示)

  1. rabbitmqctl list_user_permissions

查看指定用户的权限

  1. rabbitmqctl list_user_permissions username

清除用户权限

-p / 表示指定vHosts

  1. rabbitmqctl clear_permissions -p / username

web管理相关

开启/关闭web管理页面
  1. # 开启web管理页面
  2. rabbitmq-plugins enable rabbitmq_management
  3. # 关闭web管理页面
  4. rabbitmq-plugins disable rabbitmq_management

插件相关

查看插件

  1. rabbitmq-plugins list

应用管理

应用和节点都关闭 :rabbitmqctl stop
关闭应用:rabbitmqctl stop_app
启动应用:rabbitmqctl start_app

队列管理

查看所有队列
  1. rabbitmqctl list_queues
清除所有队列

清楚之前需要先执行rabbitmqctl stop_app命令

  1. rabbitmqctl reset
强制清除队列
  1. 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:交换机类型
  1. rabbitmqadmin -u root -p woaini declare exchange name=exchange_name_1 durable=true auto_delete=false type=direct
创建队列
  1. 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名称必须一致,否则发送消息时无法路由

  1. rabbitmqadmin -u root -p woaini declare binding source=exchange_name_1 destination=queue_name_1 routing_key=queue_name_1
发送消息
  1. rabbitmqadmin -u root -p woaini publish routing_key=routing_key_1 payload="hello yexindong"
查看队列中的消息

可以查看到刚刚发送的消息

  1. 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 指定用户密码

  1. curl -i -u root:woaini http://localhost:15672/api/queues
查看虚拟主机 myvh 下 hello-queue 队列的数据统计
  1. curl -i -u root:woaini http://localhost:15672/api/queues/myvh/hello-queue
查看虚拟主机 / 下 hello-queue 队列的数据统计

需要将 / 进行转义后结果为:%2f

  1. curl -i -u root:woaini http://localhost:15672/api/queues/%2f/hello-queue
创建队列

在 /myvh 虚拟主机下创建一个名为 javaboy-queue 的队列

  1. 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
查看当前连接信息
  1. curl -i -u root:woaini http://localhost:15672/api/connections
查看当前用户信息
  1. curl -i -u root:woaini http://localhost:15672/api/users
创建用户

创建一个名为 zhangsan,密码是 123 ,角色是 administrator 的用户。

  1. 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 下:

  1. curl -i -u root:woaini -H "{Content-Type:application/json}" -d '{"configure":".*","write":".*","read":".*"}' -XPUT http://localhost:15672/api/permissions/myvh/zhangsan

关键字消息队列