关于rabbitmq:RabbitMQ常用命令

4次阅读

共计 5737 个字符,预计需要花费 15 分钟才能阅读完成。

RabbitMQ 常用命令

简介

基本概念

  1. Server(broker): 承受客户端连贯,实现 AMQP 音讯队列和路由性能的过程。
  2. Virtual Host: 其实是一个虚构概念,相似于权限控制组,一个 Virtual Host 外面能够有若干个 Exchange 和 Queue,然而权限管制的最小粒度是 Virtual Host。
  3. Exchange: 承受生产者发送的音讯,并依据 Binding 规定将音讯路由给服务器中的队列。ExchangeType 决定了 Exchange 路由音讯的行为,例如,在 RabbitMQ 中,ExchangeType 有 direct、Fanout 和 Topic 三种,不同类型的 Exchange 路由的行为是不一样的。
  4. Message Queue:音讯队列,用于存储还未被消费者生产的音讯。
  5. Message: 由 Header 和 Body 组成,Header 是由生产者增加的各种属性的汇合,包含 Message 是否被长久化、由哪个 Message Queue 承受、优先级是多少等。而 Body 是真正须要传输的 APP 数据。
  6. Binding:Binding 分割了 Exchange 与 Message Queue。Exchange 在与多个 Message Queue 产生 Binding 后会生成一张路由表,路由表中存储着 Message Queue 所需音讯的限度条件即 Binding Key。当 Exchange 收到 Message 时会解析其 Header 失去 Routing Key,Exchange 依据 Routing Key 与 Exchange Type 将 Message 路由到 Message Queue。Binding Key 由 Consumer 在 Binding Exchange 与 Message Queue 时指定,而 Routing Key 由 Producer 发送 Message 时指定,两者的匹配形式由 Exchange Type 决定。
  7. Connection: 连贯,对于 RabbitMQ 而言,其实就是一个位于客户端和 Broker 之间的 TCP 连贯。
  8. Channel: 信道,仅仅创立了客户端到 Broker 之间的连贯后,客户端还是不能发送音讯的。须要为每一个 Connection 创立 Channel,AMQP 协定规定只有通过 Channel 能力执行 AMQP 的命令。一个 Connection 能够蕴含多个 Channel。之所以须要 Channel,是因为 TCP 连贯的建设和开释都是非常低廉的,如果一个客户端每一个线程都须要与 Broker 交互,如果每一个线程都建设一个 TCP 连贯,暂且不思考 TCP 连贯是否节约,就算操作系统也无奈接受每秒建设如此多的 TCP 连贯。RabbitMQ 倡议客户端线程之间不要共用 Channel,至多要保障共用 Channel 的线程发送音讯必须是串行的,然而倡议尽量共用 Connection。
  9. Command:AMQP 的命令,客户端通过 Command 实现与 AMQP 服务器的交互来实现本身的逻辑。例如在 RabbitMQ 中,客户端能够通过 publish 命令发送音讯,txSelect 开启一个事务,txCommit 提交一个事务。

用户角色

用户角色分为 5 中类型:

用户角色可分为五类,超级管理员, 监控者, 策略制定者, 一般管理者以及其余。

超级管理员(administrator)

可登陆治理控制台 (启用 management plugin 的状况下),可查看所有的信息,并且能够对用户,策略(policy) 进行操作。

监控者(monitoring)

可登陆治理控制台(启用 management plugin 的状况下),同时能够查看 rabbitmq 节点的相干信息(过程数,内存应用状况,磁盘应用状况等)

策略制定者(policymaker)

可登陆治理控制台(启用 management plugin 的状况下), 同时能够对 policy 进行治理。但无奈查看节点的相干信息

一般管理者(management)

仅可登陆治理控制台(启用 management plugin 的状况下),无奈看到节点信息,也无奈对策略进行治理。

其余(none)

无奈登陆治理控制台,通常就是一般的生产者和消费者。

常用命令

节点治理

# 查问节点状态
rabbitmqctl status
# 进行 RabbitMQ 利用,然而 Erlang 虚拟机还是处于运行状态。此命令的执行优先于其余治理操作,比方 rabbitmqctl reset。rabbitmqctl stop_ app 
# 启动 RabbitMQ 利用。在执行了其余治理操作之后,重新启动之前进行的 RabbitMQ 利用,比 rabbitmqctl reset。rabbitmqctl start_app
# 重置 RabbitMQ 节点,将 RabbitMQ 节点重置还原到最后状态。包含从原来所在的集群中删除此节点,从治理数据库 中删除所有的配置数据,如己配置的用户、vhost 等,以及删除所有的长久化音讯。执行 rabbi tmqctl reset 命令前必须进行 RabbitMQ 利用。rabbitmqctl reset
# 强制将 RabbitMQ 节点重置还原到最后状态。不同于 rabbitmqctl reset 命令,rabbitmqctl force_reset 命令不管以后治理数据库的状态和集群配置是什么,都会无条件地重直节点。它只能在数据库或集群配置己损坏的状况下应用。与 rabbitmqctl reset 命令一样,执行 rabbitmqctl force_reset 命令前必须先进行 RabbitMQ 利用。rabbitmqctl force_reset
# 批示 RabbitMQ 节点轮换日志文件。RabbitMQ 节点会将原来的日志文件中的内容追加到 "原 始名称 + 后缀" 的日志文件中,而后再将新的日志内容记录到新创建的日志中(与原日志文件同名)。当指标文件不存在时,会从新创立。如果不指定后缀 suffix. 则日志文件只是从新关上而不会进行轮换。rabbitmqctl rotate_logs {suffix}
# 进行运行 RabbitMQ 的 Erlang 虚拟机和 RabbitMQ 利用。如果 RabbitMQ 没有胜利敞开,则会返回一个非零值。这个命令和 rabbitmqctl stop 不同的是,它不须要指定 pid_file 而能够阻塞期待指定过程的敞开。rabbitmqctl shutdown
# 进行运行 RabbitMQ 的 Erlang 虚拟机和 RabbitMQ 服务利用,其中 pid_file 是通过 rabbitmq-server 命令启动 RabbitMQ 服务时创立的,默认状况下寄存于 mnesia 目录中。留神 rabbitmq-server -detach 这个带有 -detach 后缀的命令来启动 RabbitMQ 服务则不会生成 pid_file 文件。指定 pid_file 会期待指定过程的完结。rabbitmqctl stop [pid_file] 

插件治理

# rabbitmq-plugins [-n node] {command} [command options ...]

# 启动插件
# rabbitmq-plugins enable [--offline] [--online] {plugin ...}
rabbitmq-plugins enable rabbitmq_management
# 禁用插件
# rabbitmq-plugins disable [--offline] [--online] {plugin ...}
rabbitmq-plugins disable  rabbitmq_management
# 示意启用参数指定的插件,并且禁用其余所有插件
# 没有参数示意禁用所有的插件
rabbitmq-plugin set rabbitmq_management
# 显示所有的插件,每一行一个
rabbitmq-plugins list
# 显示所有的插件,并且显示插件的版本号和形容信息
rabbitmq-plugins list -v
# 显示所有名称含有 "management" 的插件
rabbitmq-plugins list -v management
# 显示所有显示或者隐式启动的插件
rabbitmq-plugins list -e rabbit

对象治理

# name:列举出所有虚拟机,tracing:示意是否应用了 RabbitMQ 的 trace 性能
rabbitmqctl list_vhosts [name,tracing]
# 查看交换器
rabbitmqctl list_exchanges [-p vhost] [exchangeinfoitem ...]
# 查看绑定关系的细节
rabbitmqctl list_bindings [-p vhost] [bindinginfoitem ...]
# 查看已申明的队列
rabbitmqctl list_queues [-p vhost] [queueinfoitem ...] 
# 返回 TCP!IP 连贯的统计信息。rabbìtmqctl lìst_connectìons [connectìonìnfoìtem ...]
# 返回以后所有信道的信息。rabbitmqctl list_channels [channelinfoitem ...]
# 列举消费者信息 每行将显示由制表符分隔的己订阅队列的名称、相干信道的过程标识、consumerTag、是否须要生产端确认 prefetch_count 及参数列表这些信息。rabbitmqctl list_consumers [-p vhost]

# 创立一个新的 vhost,大括号里的参 数示意 vhost 的名称。rabbitmqctl add vhost {vhostName}
# 删除一个 vhost,同时也会删除其下所有的队列、交换器、绑定关系、用户权限、参数和策略等信息。rabbitmqctl delete_vhost {vhostName}
# RabbitMQ 中的授予权限是指在 vhost 级别对用户而言的权限授予。rabbitmqctl set permissions [-p vhostName] {userName} {conf} {write} {read} 
# 对 RabbitMQ 节点进行健康检查, 确认利用是否失常运行、list_queues list_channels 是否可能失常返回等。rabbitmqctl node_health_check
# 显示每个运行程序环境中每个变量的名称和值。rabbitmqctl environment
# 为所有服务器状态生成一个服务器状态报告,井将输入重定向到一个文件:rabbitmqctl report > report.txt
rabbitmqctl report
# 显示 Broker 的状态,比方以后 Erlang 节点上运行的应用程序、RabbitMQ/Erlang 的版本信息、os 的名称、内 存及文件描述符等统计信息。rabbitmqctl status

# 策略管理
# 策略查看
rabbitmqctl list_policies [-p <vhost>]
# 策略设置
rabbitmqctl set_policy [-p <vhost>] [--priority <priority>] [--apply-to <apply-to>] <name> <pattern>  <definition>
# 策略革除
rabbitmqctl clear_policy [-p <vhost>] <name>

集群治理

# 显示集群的状态
rabbitmqctl cluster_status 
# 将节点退出指定集群中。在这个命令执行前须要进行 RabbitMQ 利用井重置节点。rabbitmqctl joio_cluster {cluster_node} [--ram] 
# 批改集群节点的类型。在这个命令执行前须要进行 RabbitMQ 利用。rabbitmqctl change_cluster_node_type {disclram}
# 将节点从集群中删除,容许离线执行。rabbitmqctl forget_cluster_node [--offiine] 

# 来查看那些 slaves 曾经实现同步:rabbitmqctl list_queues {queue_name} {slave_pids} synchronised_slave_pids
# 手动的形式同步一个 queue:rabbitmqctl sync_queue {queue_name}
# 勾销某个 queue 的同步性能:rabbitmqctl cancel_sync_queue {queue_name}

用户治理

# 查看用户列表
rabbitmqctl list_users
# 删除用户
rabbitmqctl delete_user {username}
# 革除用户明码
rabbitmqctl clear_password {username}
# 批改明码
rabbitmqctl change_password {username} {newPassword}
# 验证用户
rabbitmqctl authentiçate_user {username} {passWord}
# 新增用户
rabbitmqctl add_user {username} {password}
# 给用户受权
rabbitmqctl set_user_tags {username} {roles}
# 分明用户对某个虚拟机的权限。rabbitmqctl clear_permissions [-p vhostName] {username}
# 用来显示虚拟主机上的权限。rabbitmqctl list_permissions [-p vhost] 
# 用来显示用户在已调配虚拟机上的权限。rabbitmqctl list_user_permissions {username}

命令实战

用户操作

# 能够创立管理员用户,负责整个 MQ 的运维
rabbitmqctl add_user admin adminpasspord
# 赋予其 administrator 角色
rabbitmqctl set_user_tags admin administrator
# 创立 RabbitMQ 监控用户,负责整个 MQ 的监控
rabbitmqctl add_user  user_monitoring  passwd_monitor  
# 赋予其 monitoring 角色
rabbitmqctl set_user_tags user_monitoring monitoring
正文完
 0