跳至正文
来两杯美式
返回

消息队列(中):RabbitMQ 安装与命令速查

By 来两杯美式
发布于更新于

上一篇讲完「为什么用 MQ」和四大选型对比,本篇进入 RabbitMQ 实战——怎么装、怎么管、怎么看。所有命令都是当年在生产/测试环境摸出来的笔记,搬过来原样保留。

一、安装 Erlang

RabbitMQ 用 Erlang 写的,所以先装 Erlang 运行时。

# 解压 erlang 源码包
tar -xzf otp_src_xxx.tar.gz
cd otp_src_xxx

# 配置 + 编译 + 安装
./configure --prefix=/usr/erlang --without-javac
make && make install

# 配置环境变量(追加到 ~/.bashrc 或 /etc/profile)
export ERLANG_HOME=/usr/erlang
export PATH=$ERLANG_HOME/bin:$PATH

# 验证
erl -version

当年踩坑:Erlang 的版本必须和 RabbitMQ 版本严格匹配——RabbitMQ 每个版本都规定了最低/最高 Erlang 版本范围。装错版本会启动失败,且报错信息晦涩。装之前一定去官网查版本对照表

二、安装 RabbitMQ

# 下载对应版本 rabbit 安装包(推荐 .tar.xz,已经完成编译)
wget https://www.rabbitmq.com/releases/rabbitmq-server/vX.X.X/rabbitmq-server-generic-unix-X.X.X.tar.xz

# 解压
tar -xvf rabbitmq-server-generic-unix-X.X.X.tar.xz -C /usr/

# 配置环境变量
export RABBITMQ_HOME=/usr/rabbitmq_server-X.X.X
export PATH=$RABBITMQ_HOME/sbin:$PATH

2.1 启动 / 停止服务

rabbitmq-server       # 启动服务(前台)
rabbitmq-server -detached   # 后台启动
rabbitmqctl stop      # 停止服务

第一次启动会比较慢,因为要初始化 Mnesia 数据库。看到 starting broker... completed 才算启动成功。

三、启用 Web 监控

RabbitMQ 自带的 web 管理界面非常强大,生产环境必开

rabbitmq-plugins enable rabbitmq_management

启用后访问 http://localhost:15672 即可打开管理界面。

默认账号密码:guest / guest但是 guest 只能本地访问——远程访问会被拒绝。要让远程访问,要么改配置(不推荐),要么新建一个非 guest 用户(推荐)。

四、启用消息跟踪

调试阶段非常有用的插件——把消息投递/消费的过程记录成日志

rabbitmq-plugins enable rabbitmq_tracing

启用后,在 web 管理界面的 Admin 标签下会出现 Tracing 选项,可以创建 trace 来记录指定 vhost 的所有消息流。

生产环境慎用:消息跟踪会写大量日志,磁盘和性能都吃不消。线上排查问题用 firehose(短线开启)更合适。

五、配置文件

RabbitMQ 的配置文件位置由 sbin/rabbitmq-defaults 中的 CONFIG_FILE 变量决定:

# 编辑 sbin/rabbitmq-defaults
CONFIG_FILE=/etc/rabbitmq/rabbitmq     # 指定目录和文件名(不需要后缀,会自动加 .config)

配置文件常见项:端口、日志级别、内存水位、TCP 参数。绝大多数运维场景下,默认配置就够了——需要改的场景多半也是用 rabbitmqctl set_policy 动态调整,不必改文件。

六、用户管理

6.1 在 Web 界面创建用户

Admin → Users → Add a user

6.2 命令行管理用户

# 新建用户
rabbitmqctl add_user username password

# 删除用户
rabbitmqctl delete_user username

# 用户列表
rabbitmqctl list_users

# 更改密码
rabbitmqctl change_password username newpwd

# 设置用户角色(tags)
rabbitmqctl set_user_tags username administrator

生产环境建议:为每个应用建独立账号,按 vhost 隔离权限。不要多个应用共用一个账号——一旦泄漏或被改密码,影响面会爆炸。

七、rabbitmqctl 命令速查

7.1 服务管理

命令作用
rabbitmq-server启动服务(前台)
rabbitmq-server -detached后台启动
rabbitmqctl stop停止服务
rabbitmqctl status查看节点状态
rabbitmqctl cluster_status查看集群状态

7.2 用户管理

命令作用
rabbitmqctl add_user <name> <pass>新建用户
rabbitmqctl delete_user <name>删除用户
rabbitmqctl list_users用户列表
rabbitmqctl change_password <name> <pass>改密码
rabbitmqctl set_user_tags <name> <tag>设置角色

7.3 vhost / 权限

命令作用
rabbitmqctl add_vhost <name>新建 vhost
rabbitmqctl list_vhosts列出 vhost
rabbitmqctl set_permissions -p <vhost> <user> <conf> <write> <read>授权

7.4 队列 / 交换机

命令作用
rabbitmqctl list_queues列出所有队列
rabbitmqctl list_queues -p <vhost>列出指定 vhost 的队列
rabbitmqctl list_exchanges列出所有交换机
rabbitmqctl list_bindings列出绑定关系

实战技巧:用 list_queues 时加上 name messages messages_ready messages_unacknowledged 参数,能直接看到每条队列的堆积情况——这是排查消费者是否跟上的第一手指标:

rabbitmqctl list_queues name messages messages_ready messages_unacknowledged

7.5 策略(Policy)

策略是 RabbitMQ 动态控制队列行为的核心机制——比如开启镜像、设置 TTL、死信路由:

# 给以 ha. 开头的队列设置镜像策略(所有节点镜像)
rabbitmqctl set_policy ha-all "^ha\." \
  '{"ha-mode":"all","ha-sync-mode":"automatic"}'

生产环境几乎一定要配 Policy。镜像队列、TTL、死信全部通过 Policy 控制,而不是声明队列时硬编码——前者改起来不用动代码。

八、运维检查清单

新装一个 RabbitMQ 节点,上线前过一遍

这十项过完,节点才算「能上线」。RabbitMQ 的运维坑不少——新装时偷懒,上线后还债

九、小结

阶段关键操作
安装Erlang + RabbitMQ + 环境变量
启动rabbitmq-server -detached
监控rabbitmq-plugins enable rabbitmq_management
排查rabbitmqctl list_queues、web 界面看堆积
调优Policy 动态调整(镜像、TTL、死信)

下一篇「消息队列(下):Spring Boot 集成 RabbitMQ」进入最贴业务的部分——怎么在 Spring Boot 里发消息、消费消息、保证可靠性

现代视角补一句(2026):现在 RabbitMQ 官方推荐用 Quorum Queue(基于 Raft 的仲裁队列)替代老的镜像队列——但 rabbitmqctl 命令本身几乎没变。运维层的肌肉记忆可以原样沿用。


分享这篇文章:
通过邮件分享这篇文章✓ 链接已复制
查看系列全部文章
  1. 01.消息队列开篇:为什么用 MQ + 主流选型对比
  2. 02.消息队列(中):RabbitMQ 安装与命令速查
  3. 03.消息队列(下):Spring Boot 集成 RabbitMQ 实战
  4. 04.消息队列(末):RabbitMQ 集群与高可用四种模式

上一篇
消息队列(下):Spring Boot 集成 RabbitMQ 实战
下一篇
消息队列开篇:为什么用 MQ + 主流选型对比