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 是脚本化的补充,图形化操作见下一章管理控制台。

笔记加载中…