开发者

RabbitMq 常用命令和REST API详解

目录
  • 服务管理相关
  • 用户相关
    • 创建用户
    • 修改密码
    • 校验密码
    • 展示所有用户
    • 删除用户
    • 清除密码
    • 角色相关
    • 设置用户角色
  • Vhost管理
    • 权限管理
      • 设置用户权限
      • 查看用户权限
    • 清除用户权限
      • web管理相关
        • 开启/关闭web管理页面
      • 插件相关
        • 应用管理
          • 队列管理
            • 查看所有队列
            • 清除所有队列
            • 强制清除队列
          • 集群管理
            • 信息查看
              • rabbitmqadmin 命令
                • 查询命令
                • 创建交换机
                • 创建队列
                • 绑定队列和交换机
                • 发送消息
                • 查看队列中的消息
                • 其他命令
              • REST API
                • 查看所有队列统计数据
                • 查看虚拟主机 myvh 下 hello-queue 队列的数据统计
                • 查看虚拟主机 / 下 hello-queue 队列的数据统计
                • 创建队列
                • 查看当前连接信息
                • 查看当前用户信息
                • 创建用户
                • 为新用户设置 vhost

              服务管理相关

              启动: 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管理

              查看所有虚拟主机:rabbitandroidmqctl 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:1567编程2/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 -pythonu root:woaini -H "{Coandroidntent-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内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

              0

              上一篇:

              下一篇:

              精彩评论

              暂无评论...
              验证码 换一张
              取 消

              最新开发

              开发排行榜