RabbitMQ 之 命令大全 及 操作大全

rabbitmqctl 命令的一些基础操作

rabbitmqctl add vhost {vhostName} -> 命令创建一个新的 vhost ,大括号里的参 数表示 vhost 的名称。
rabbitmqctl list_vhosts {name,tracing} -> name:罗列出所有虚拟机,tracing:表示是否使用了 RabbitMQ 的 trace 功能
rabbitmqctl delete_vhost {vhostName) -> 命令删除一个vhost,同时也会删除其下所有的队列、交换器、绑定关系、 用户权限、参数和策略等信息。
rabbitmqctl set permissions [-p vhostName] {userName) {conf) {write) {read) -> RabbitMQ 中的授予权限是指在 vhost 级别对用户而言的权限授予。

vhost: 授予用户访问权限的 vhost 名称,可以设置为默认值,即 vhost 为 "/"。
user: 可以访问指定 vhost 的用户名。
conf: 一个用于匹配用户在哪些资源上拥有可配置权限的正则表达式。(交换机,队列,创建用户等)
write: 一个用于匹配用户在哪些资源上拥有可写权限的正则表达式。
read: 一个用于匹配用户在哪些资源上拥有可读权限的正则表达式。
rabbitmqctl set_permissions -p vhost1 root ".*" ".*" ".*" -> 配置root用户在vhost1队列拥有所有权限
rabbitmqctl set_permissions -p vhost2 root "^queue.*" ".*" ".*" -> 配置root用户在vhost2队列拥有以"queue"开头的资源上具备可配置权限,并在所有资源上有用读写权限

rabbitmqctl clear_permissions [-p vhostName] {userName} -> 清楚用户对某个虚拟机的权限。
rabbitmqctl list_permissions [-p vhost] -> 用来显示虚拟主机上的权限。
rabbitmqctl list_user_permissions {userName} -> 用来显示用户在已分配虚拟机上的权限。

rabbitmqctl 是用来管理 RabbitMQ 中间件的命令行工具,它通过连接各个 RabbitMQ 节点来执行所有操作。
rabbitmqctl [-n node) [-t timeout) [-q) (command) [command options...)

-q:标志来启用 quiet 模式,这样可以屏蔽一些消息的输出。 默认不开启 quiet 模式。
-t:操作超时时间(秒为单位),只适用于 "list_xxx" 类型的命令,默认是无穷大。
演示效果:/默认虚拟机
./rabbitmqctl list_vhosts
Listing vhosts 
/
./rabbitmqctl list_vhosts -q
/
./rabbitmqctl list vhosts -q -t 1
/
./rabbitmqctl list vhosts -q -t 0
Error : {timeout , O. O}

用户管理操作

rabbitmqctl add_user {userName} {passWord} -> 创建用户
rabbitmqctl change_password {userName} {newPassword} -> 修改密码
rabbitmqctl clear_password {userName} -> 清除用户密码
rabbitmqctl authentiçate_user {userName} {passWord} -> 验证用户
rabbitmqctl delete_user {userName} -> 删除用户
rabbitmqctl llist_users -> 罗列当前所有用户,和用户角色
rabbitmqctl set_user_tags {userName} {tag ...} -> 给用户设置角色,tag 参数用于设置 0个、1个或者 多个的角色,设置之后任何之前现有的身份都会被删除。

用户角色分为5中类型:
none: 无任何角色。新创建的用户的角色默认为 none。
management:可以访问web管理页面。
policymaker:包含managerment的所有权限,并且可以管理策略(Policy)和参数(Parameter)。
monitoring:包含management的所有权限,并且可以看到所有链接、信道及节点相关的信息。
administartor:包含monitoring的所有权限,并且可以管理用户、虚拟机、权限、策略、参数等。(最高权限)

web页面管理操作

Rabbitmq有管理页面,访问是 localhost:15672 ,但是需要开启 RabbitMQ management 插件才可以访问,Rabbitmq自带的插件都是在 /plugins 目录下,如下所示:
-rw-r--r-- 1 root root 162570 Oct 25 19 : 45 rabbitmq_federation-3.6.10.ez
-rw-r--r-- 1 root root 13796 Oct 25 19 : 45 rabbitmq_federation_management-3.6.10.ez
-rw-r--r-- 1 root root 22414 Oct 25 19 :45 rabbitmq_jms_topic_exchange-3.6.10.ez
-rw-r--r-- 1 root root 744360 Oct 25 19 : 45 rabbitmq_management-3.6.10.ez
-rw-r--r-- 1 root root 149205 Oct 25 19 : 45 rabbitmq_management_agent-3.6.10.ez
-rw-r--r-- 1 root root 41421 Oct 25 19 : 45 rabbitmq_management_visua1iser-3.6.10.ez
其中以.ez扩展展名称结尾的文件就是 RabbtMQ 的插件。rabbitmq_management-3.6.10.ez 就是指 RabbitMQ Management 插件。启动语法如下:
rabbitmq-plugins [-n node] {command} [command options ...]
rabbitmq-plugins enable [plugin-name] -> 启动插件
rabbitmq-plugins disable [plugin-name] -> 关闭插件
rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins list -> 查看启动的插件有哪些,其中[E]的为显示启动,[e]的为隐式启动,其意思就是启动一个插件,还需要启动一些其他插件,而这些插件就是隐式启动,被指定的插件称为显示启动。
rabbitmq_management 插件之后还需要重启 RabbitMQ 服务才能使其正式生效。

应用管理命令

rabbitmqctl stop [pid_file] -> 停止运行RabbitMQ的Erlang虚拟机和RabbitMQ服务应用,其中pid_file是通过rabbitmq-server 命令启动 RabbitMQ 服务时创建的,默认情况下存放于mnesia 目录中。注意rabbitmq-server -detach 这个带有 -detach 后缀的命令来启动 RabbitMQ 服务则不会生成 pid_file 文件。指定pid_file会等待指定进程的结束。
rabbitmqctl shutdown -> 停止运行 RabbitMQ 的 Erlang 虚拟机和 RabbitMQ 务应用。如果 RabbitMQ 没有成功关闭,则会返回一个非零值。这个命令和rabbitmqctl stop 不同的是,它不需要指定 pid_file 而可以阻塞等待指定进程的关闭。
rabbitmqctl stop_ app -> 停止 RabbitMQ 服务应用,但是 Erlang 虚拟机还是处于运行状态。此命令的执行优先于其 他管理操作,比如 rabbitmqctl reset。
rabbitmqctl start_ app -> 启动 RabbitMQ 应用。命令 型的用途是在执行了其他管理操作之后,重新启动之前停 止的 RabbitMQ 应用,比 rabbi tmqctl reset。
rabbitmqctl wait [pid_file] -> 等待 RabbitMQ 应用的启动。它会等到 pid_file 的创建,然后等待 pid_file 中所代表 的进程启动。当指定的进程没有启动 RabbitMQ 应用而关闭时将会返回失败。
rabbitmqctl reset -> 将RabbitMQ 节点重置还原到最初状态。包括从原来所在的集群中删除此节点,从管理数据库 中删除所有的配置数据,如己配置的用户、 vhost 等,以及删除所有的持久化消息。执行 rabbi tmqctl reset 命令前必须停止RabbitMQ 应用。
rabbitmqctl force _reset -> 强制将 RabbitMQ 节点重置还原到最初状态。不同于 rabbitmqctl reset 命令, rabbitmqctl force_reset 命令不论当前管理数据库的状态和集群配置是什么,都会无条件地重直节点。它只能在数据库或集群配置己损坏的情况下使用。与 rabbitmqctl reset 命令一样,执行 rabbitmqctl force_reset 命令前必须先停止 RabbitMQ 应用。
rabbitmqctl rotate_logs {suffix} -> 指示 RabbitMQ 节点轮换日志文件。RabbitMQ 节点会将原来的日志文件中的内容追加到"原 始名称+后缀"的日志文件中,然后再将新的日志内容记录到新创建的日志中(与原日志文件同 名)。当目标文件不存在时,会重新创建。如果不指定后缀 suffix. 则日志文件只是重新打开 而不会进行轮换。
rabbitmqctl hipe_compile {directory} -> 暂时未知使用


该图片来自rabbitmq实战.pdf

集群命令

rabbitmqctl joio_cluster {cluster_node} [--ram] -> 将节点加入指定集群中。在这个命令执行前需要停止 RabbitMQ 应用井重置节点。
rabbitmqctl cluster_status -> 显示集群的状态。
rabbitmqctl change_cluster_node_type {disclram} -> 修改集群节点的类型。在这个命令执行前需要停止 Rabb tMQ 应用。
rabbitmqctl forget_cluster_ node [--offiine] -> 将节点从集群中删除,允许离线执行 。
rabbitmqctl update_ cluster_nodes {clusternode} -> 在集群中的节点应用启动前咨询 clusternode 节点的最新信息,并更新相应的集群信息。这个和 join_cluster 不同,它不加入集群。考虑这样一种情况 节点A和节点B都在集群中,当节点A离线了,节点C又和节点B组成了一个集群,然后节点B又离开了集群,但A醒来的时候,他会尝试联系节点B,但是这样会失败,因为节点B已经不再集群中了。Rabbitmqctlupdate cluster nodes -n A C 可以解决这种场景下出现的问题。
rabbitmqctl force_boot -> 确保节点可以启动,即使它不是最后一个关闭的节点。通常情况下,当关闭整个 RabbitMQ 集群时,重启的第一个节点应该是最后关闭的节点,因为它可以看到其他节点所看不到的事情。 但是有时会有一些异常情况出现,比如整个集群都掉电而所有节点都认为它不是最后 个关闭 的。在这种情况下,可以调用 rabbitmqctl force_boot 命令,这就告诉节点可以无条件 地启动节点。在此节点关闭后,集群的任何变化,它都会丢失。如果最后 个关闭的节点永久 丢失了,那么需要优先使用 rabbitmqctl forget_cluster _node offline 命令,因 为它可以确保镜像队列的正常运转。
rabbitmqctl sync_queue [-p vhost] {queue} -> 指示未同步队列 queue的slave 镜像可以同步 maste 镜像行的内容。同步期间此队列会被 阻塞(所有此队列的生产消费者都会被阻塞),直到同步完成。此条命令执行成功的前提是队列 queue 配置了镜像。注意 未同步队列中的消息被耗尽后 最终也会变成同步,此命令主要用 于未耗尽的队列。
rabbitmqctl cancel_sync_queue [-p vhost] {queue} -> 取消队列 queue 同步镜像的操作。
rabbitmqctl set_cluster_name {name} -> 设置集群名称。

服务端状态查询

rabbitmqctl list_queues [-p vhost] [queueinfoitem ...] -> 此命令返回队列的详细信息,如果无 [-p vhost] 参数,将显示默认的 vhost为 "/" 中的 队列详情。queueinfoitem 参数用于指示哪些队列的信息项会包含在结果集中,结果集的列 顺序将匹配参数的顺序。 queueinfoitem 可以是下面列表中的任何值:

name: 队列名称。
durable:队列是否持久。
auto_delete:队列是否自动删除。
arguments:队列的参数。
policy:应用到队列上的策略名称。
pid:队列关联Er1ang进程的ID。
owner_pid:处理排他队列连接的 Erlang 进程ID。如果此队列是非排他的,此值将为空。 
exclusive:队列是否是排他的。
exclusive_consumer_pid:订阅到此排他队列的消费者相关的信道关联的 Erlang 进程ID。如果此队列是非排他的,此值将为空
exclusive_consumer_tag:订阅到此排他队列的消费者的 consumerTag 如果 此队列是非排他的,此值将为空。
messages_ready:准备发送给客户端的消息个数。
messages_unacknowledged:发送给客户端但尚未应答的消息个数。
messages:准备发送给客户端和未应答消息的总和。
messages_ready_ram:驻留在内存中 messages_ready 的消息个数。
messages_unacknowledged_ram:驻留在内存中 messages_unacknowledged 的消息个数。
messages_ram:驻留在内存中的消息总数。
messages_persistent:队列中持久化消息的个数。对于非持久化队列来说总是0.
messages_bytes:队列中所有消息的大小总和 这里不包括消息属性或者任何其他开销。
messages_bytes_ready: 准备发送给客户端的消息的大小总和。
messages_bytes_unacknowledged:发送给客户端但尚未应答的消息的大小总和。
messages_bytes_ram:驻留在内存中的 messages_bytes。
messages_bytes_persistent:队列中持久化的 messages_bytes。
disk_reads:从队列启动开始,己从磁盘中读取该队列的消息总次数。
disk_writes:从队列启动开始,己向磁盘队列写消息的总次数。
consumer:消费者数目。
consumer_utilisation:队列中的消息能够立刻投递给消费者的比率,介于0和1之间 。这个受网络拥塞或者 Basic.Qos 的影响而小于1.
memory:与队列相关的 Erlang 进程所消耗的内存字节数,包括械、堆及内部结构。
slave_pids:如果队列是镜像的 ,列出所有 slave 镜像的 pid。
synchronised_slave_pids:如果队列是镜像的,列出所有己经同步的 slave 镜像的pid。
state:队列状 态。正常情况下是running:如果队列正常同步数据可能会有 "{syncing, MsgCount}" 的状态;如果队列所在的节点掉线了,则队列显示状态为 down (此时大多数的 queueinfoitems 也将不可用)。

rabbitmqctl list_exchanges [-p vhost] [exchangeinfoitem ...] -> 返回交换器的详细细节。

name:交换器名称。
type:交换器类型。
durable:设置是否持久化。 
auto_delete:是否自动删除。
internal:是否内置的。
arguments:其他的一些结构化参数。
policy:交换器上的策略名称。

rabbitmqctl list_bindings [-p vhost] [bindinginfoitem ...] -> 返回绑定关系的细节

source_name:绑定中消息来源的名称。
source_kind:绑定中消息来源的类别。
destination_name:绑定中消息目的地的名称。
destination_kind:绑定中消息目的地的种类。
routing_key:绑定的路由键。
arguments:绑定的参数。

rabbìtmqctl lìst_connectìons [connectìonìnfoìtem ...] -> 返回 TCP!IP连接的统计信息。

pid:与连接相关的 Er1ang 进程 ID 
name:连接的名称。
port:服务器端口。
host:返回反向 DNS 获取的服务器主机名称,或者 IP 地址,或者未启用。
peer_port:服务器对端端口。当一个客户端与服务器连接时,这个客户端的端口就是peer_port。
peer_host:返回反向 DNS 获取的对端主机名称,或者ip地址,或者未启用。
ssl:是否启用 SSL
ssl_protoco1:SSL 协议,如 tlsvl
ssl_key_exchange:SSL 密钥交换算法,如 rsa 
ssl_cipher:SSL 加密算法,如 aes 256 cbc 
ssl_hash:SSL 哈希算法,如 sha
peer_cert_subject:对端的 SSL 安全证书的主题,基于盯C4514 的形式。 
peer_cert_issuer:对端 SSL 安全证书的发行者, 基于RFC4514 的形式 
peer_cert_va1idity:对端 SSL 安全证书的有效期。
state:连接状态,包括 starting tuning opening running flow blocking blocking closing closed 这几种。
channe1s:该连接中的信道个数。
protoco1:使用的 AMQP 协议的版本,当前是 {0,9,1} 或者 {0,8,0} 。注意,如果客户端请求的是 AMQP 0-9 的连接, RabbitMQ 也会将其视为0-9-1
auth_mechanism:使用的 SASL 认证机制,如 PLAIN AMQPLAIN EXTERNAL RABBIT-CR-DEMO 等
user:与连接相关的用户名。
vhost:与连接相关的 vhost 的名称。
timeout:连接超时/协商的心跳间隔,单位为秒。
frame_max:最大传输帧的大小,单位为B
channe1_max:此连接上信道的最大数量。如果值0,,则表示无上限,但客户端一般会将0转变为 65535
c1ient_properties:在建立连接期间由客户端发送的信息属性。 
recv_oct:收到的字节数。
recv_cnt:收到的数据包个数。
send_oct:发送的字节数。
send_cnt:发送的数据包个数。
send_pend:发送队列大小。
connected_at:连接建立的时间戳。

rabbitmqctl list_channels [channelinfoitem ...] -> 返回当前所有信道的信息。

pid:与连接相关的 Erlang 进程 ID
connection:信道所属连接的 Erlang 进程 ID
name:信道的名称。
number:信道的序号。
user:与信道相关的用户名称。
vhost:与信道相关的 vhost
transactional:信道是否处于事务模式。 
confirm:信道是否处于 publisher confirm 模式。
consumer_count:信道中的消费者的个数。
messages_unacknowledged:己投递但是还未被 ack 的消息个数。
messages_uncommitted:己接收但是还未提交事务的消息个数 
acks_uncommitted:已ack 收到但是还未提交事务的消息个数
messages_unconfirmed:己发送但是还未确认的消息个数 如果信道不处于 publisher confmn 模式下 ,则此值为0
perfetch_count:新消费者的 Qos 个数限制 0表示无上限
global_prefetch_count:: 整个信道的 Qos 个数限制,0表示无上限

rabbitmqctllist_consumers [-p vhost] -> 列举消费者信息 每行将显示由制表符分隔的己订阅队列的名称、相关信道的进程标识、consumerTag、是否需要消费端确认 prefetch_count 及参数列表这些信息。
rabbitmqctl status -> 显示 Broker 的状态,比如当前 Erlang 节点上运行的应用程序、RabbitMQ/Erlang的版本信息、os 的名称、内 存及文件描述符等统计信息。
rabbitmqctl node_health_check -> 对RabbitMQ 节点进行健康检查,确认应用是否正常运行、list_queues list_channels 是否能够正常返回等。
rabbitmqctl environment -> 显示每个运行程序环境中每个变量的名称和值。
rabbitmqctl report -> 为所有服务器状态生成一个服务器状态报告,井将输出重定向到一个文件:rabbitmqctl report > report.txt

RabbitMQ Http API 接口

尽情期待

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • 什么叫消息队列? 消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复...
    Agile_dev阅读 2,368评论 0 24
  • CentOS安装RabbitMQ 安装erlang 配置epel源 centos6.xwget -O /etc/y...
    肖金光xjg阅读 1,179评论 0 3
  • RabbitMQ 原理介绍及安装部署 标签:RabbitMQ 安装 简介 RabbitMQ 是一个用 Erlang...
    神仙CGod阅读 8,550评论 0 60
  • 如果RabbitMQ集群只有一个broker节点,那么该节点的失效将导致整个服务临时性的不可用,并且可能会导致me...
    Java架构_师阅读 3,319评论 0 2
  • 如果RabbitMQ集群只有一个broker节点,那么该节点的失效将导致整个服务临时性的不可用,并且可能会导致me...
    零点145阅读 282评论 0 0