RabbitMQ 常用命令
命令行管理 RabbitMQ 主要用 rabbitmqctl(日常管理)与 rabbitmq-diagnostics(健康检查),装好管理插件后还有 HTTP 风格的 rabbitmqadmin。多数命令需要 root 权限,示例统一加 sudo。
服务与节点管理
sudo rabbitmqctl status # 节点整体状态:版本、Erlang、内存、监听端口等
# 输出:Runtime: Erlang ... RabbitMQ version: 3.13.x ...
sudo rabbitmqctl stop # 停止节点(等价于 systemctl stop rabbitmq-server)
sudo rabbitmqctl stop_app # 只停 RabbitMQ 应用,Erlang 节点进程仍在(集群维护用)
sudo rabbitmqctl start_app # 重新启动应用
reset 会把节点的虚拟主机、队列、消息等数据全部清空并脱离集群,务必先 stop_app 再 reset,生产环境慎用:
sudo rabbitmqctl stop_app
sudo rabbitmqctl reset # 回到"全新节点"状态,数据不可恢复
sudo rabbitmqctl start_app
查看队列 / 交换机 / 绑定 / 连接
列表类命令可指定要显示的列,队列最常用的是 name/messages/consumers:
sudo rabbitmqctl list_queues name messages consumers
# 输出:name messages consumers
# order_queue 120 3
sudo rabbitmqctl list_exchanges name type
# 输出:name type
# (AMQP default) direct
sudo rabbitmqctl list_bindings source_name destination_name routing_key
sudo rabbitmqctl list_connections name user state
用户、虚拟主机与权限
RabbitMQ 的权限模型是:用户(user) → 虚拟主机(vhost) → 权限(permission)。默认用户 guest 只能从本机连接,生产环境要先建专用账号:
sudo rabbitmqctl add_user dev Dev@2024 # 建用户(参数:用户名 密码)
sudo rabbitmqctl set_user_tags dev administrator # 打角色标签,administrator 才可登录管理台
sudo rabbitmqctl add_vhost dev_vhost # 建虚拟主机
sudo rabbitmqctl set_permissions -p dev_vhost dev ".*" ".*" ".*"
# 三个正则分别代表:配置、写、读 权限,".*" 表示全部放行
sudo rabbitmqctl list_users # 查看用户
sudo rabbitmqctl list_permissions -p dev_vhost # 查看某 vhost 上的授权
对应删除与收回:delete_user、delete_vhost、clear_permissions。想让 guest 支持远程登录必须改配置文件中的 loopback_users 列表,但更推荐的做法是建新用户而不是放开 guest。
健康检查 rabbitmq-diagnostics
诊断命令用来判断节点是否健康、能否正常服务:
sudo rabbitmq-diagnostics ping # 最常用的连通性检查
# 输出:Ping succeeded
sudo rabbitmq-diagnostics check_running
# 输出:Node 'rabbit@myhost' is running
sudo rabbitmq-diagnostics -q check_alarms # 检查是否有磁盘/内存等资源告警
HTTP 客户端 rabbitmqadmin
rabbitmqadmin 随管理插件提供,本质是 HTTP API 的命令行封装,适合在脚本里建队列、查状态:
sudo rabbitmqadmin declare queue name=task_queue durable=true
# 输出:queue declared
sudo rabbitmqadmin list queues name messages
# 输出:+------------+----------+
# | name | messages |
# +------------+----------+
# | task_queue | 0 |
默认连本机;远程管理加 -H 主机 -u 用户 -p 密码。想不起来就敲 rabbitmqadmin -h,各子命令也都能加 -h 查参数,无需死记。
小结
管理命令按四类记忆:节点(status/stop/stop_app/reset)、查看(list_queues/list_exchanges/list_bindings/list_connections)、权限(add_user/add_vhost/set_permissions 等)、健康(rabbitmq-diagnostics ping/check_*)。rabbitmqadmin 是脚本化的补充,图形化操作见下一章管理控制台。