RabbitMQ常用命令汇总

本文主要整理 RabbitMQ 的常用运维命令,安装过程这里不再展开。

消息队列常用命令

启动

注意启动顺序,必须先启动节点,再启动 RabbitMQ 应用服务。

1
2
rabbitmq-server -detached #后台启动节点
rabbitmqctl start_app #启动RabbitMQ应用服务, Starts the RabbitMQ application.

关闭RabbitMQ应用服务

Stops the RabbitMQ application, leaving the runtime (Erlang VM) running.

1
rabbitmqctl stop_app #关闭RabbitMQ应用服务

关闭节点

Shuts down the node, both RabbitMQ and its runtime.

1
rabbitmqctl shutdown

关闭Erlang节点

Stops the Erlang node on which RabbitMQ is running.

1
rabbitmqctl stop

启动web管理插件

1
rabbitmq-plugins enable rabbitmq_management #启动web管理插件

重置节点

Returns a RabbitMQ node to its virgin state.

1
rabbitmqctl reset

集群常用命令

将一个节点(ram方式,默认是disc)加入集群

1
rabbitmqctl join_cluster hare@elena --ram

查看集群状态

1
rabbitmqctl cluster_status

修改节点类型

节点类型只能是disc或是ram

1
2
3
rabbitmqctl stop_app
rabbitmqctl change_cluster_node_type ram
rabbitmqctl start_app

在当前集群中加入某节点

1
rabbitmqctl join_cluster {rabbit_node_name} (某些低版本可以采用rabbitmqctl cluster {rabbit_node_name})

将某节点剔除出当前集群

1
rabbitmqctl forget_cluster_node {rabbit_node_name}

获取服务器状态信息

1
rabbitmqctl status

队列信息

1
rabbitmqctl list_queues [-p vhostpath] [queueinfoitem …]

queueinfoitem可以为: name, durable, autodelete, arguments, messagesready, messages_unacknowled, messages, consumers, memory.

Exchange信息

1
rabbitmqctl list_exchanges [-p vhostpath] [exchangeinfoitem …]

exchangeinfoitem有:name, type, durable, auto_delete, internal, arguments.

Binding信息

1
rabbitmqctl list_bindings [-p vhostpath] [bindinginfoitem …]

bindinginfoitem有:sourcename, sourcekind, destinationname, destinationkind, routing_key, arguments.等

connection信息

1
rabbitmqctl list_connections [connectioninfoitem …]

connectioninfoitem有:recvoct,recvcnt,sendoct,sendcnt,send_pend等。

channel信息

1
rabbitmqctl list_channels [channelinfoitem …]

channelinfoitem有:consumercount,messagesunacknowledged,messagesuncommitted,acksuncommitted,messagesunconfirmed,prefetchcount,clientflowblocked

vhost管理

1
2
添加vhost: rabbitmqctl add vhost {name}
删除vhost: rabbitmqctl delete vhost {name}

镜像队列的设置

镜像队列的配置通过添加policy完成,policy添加的命令为:

1
rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority]

-p Vhost: 可选参数,针对指定vhost下的queue进行设置
Name: policy的名称
Pattern: queue的匹配模式(正则表达式)
Definition: 镜像定义,包括三个部分 ha-mode,ha-params,ha-sync-mode
ha-mode: 指明镜像队列的模式,有效值为 all/exactly/nodes
all表示在集群所有的节点上进行镜像
exactly表示在指定个数的节点上进行镜像,节点的个数由ha-params指定
nodes表示在指定的节点上进行镜像,节点名称通过ha-params指定
ha-params: ha-mode模式需要用到的参数
ha-sync-mode: 镜像队列中消息的同步方式,有效值为automatic,manually
Priority: 可选参数, policy的优先级

例如,对队列名称以hello开头的所有队列进行镜像,并在集群的两个节点上完成镜像,policy的设置命令为:

1
rabbitmqctl set_policy hello-ha "^hello" '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'

插件管理

开启某个插件

1
rabbitmq-plugins enable {插件名}

关闭某个插件

1
rabbitmq-plugins disable {插件名}

用户管理

添加用户

1
rabbitmqctl add_user {username} {password}

删除用户

1
rabbitmqctl delete_user {username}

修改密码

1
rabbitmqctl change_password {username} {newpassword}

设置用户角色

1
rabbitmqctl set_user_tags {username} {tag} tag可以为administrator, monitoring, management

权限管理

权限设置

1
rabbitmqctl set_permissions [-p vhostpath] {user} {conf} {write} {read}

conf:一个正则表达式match哪些配置资源能够被该用户访问。
write:一个正则表达式match哪些配置资源能够被该用户读。
read:一个正则表达式match哪些配置资源能够被该用户访问。

查看(指定vhost)所有用户的权限信息

1
rabbitmqctl list_permissions [-p vhostPath]

查看指定用户的权限信息

1
rabbitmqctl list_user_permissions {username}

清除用户的权限信息

1
rabbitmqctl clear_permissions [-p vhostPath] {username}

示例:

1
rabbitmqctl set_permissions -p / root ".*" ".*" ".*"

参考资料

RabbitMq常用命令
rabbitmqctl(8)
rabbitmq——镜像队列