下载地址/官网:Apache RocketMQ Download
RocketMQ 更适合后续承接订单事件、延时消息、事务消息和顺序消息。它和 Spring Cloud Alibaba 体系同源,接入时可以优先评估
rocketmq-spring-boot-starter。
端口和用途
| 端口 | 用途 |
|---|---|
| 9876 | NameServer 地址 |
| 10911 | Broker 主端口 |
| 10909 | VIP Channel 端口 |
| 10912 | Broker HA 端口 |
学习和单机部署可以先只暴露内网,生产不要把这些端口直接开放到公网。
Windows 安装部署 RocketMQ
- 准备 JDK 21,确认:
java -version
- 打开 RocketMQ Download,下载二进制发行包并解压,例如:
D:\apps\rocketmq
- 设置环境变量:
[Environment]::SetEnvironmentVariable("ROCKETMQ_HOME", "D:\apps\rocketmq", "User")
[Environment]::SetEnvironmentVariable("NAMESRV_ADDR", "127.0.0.1:9876", "User")
重新打开 PowerShell 后生效。
- 启动 NameServer:
Set-Location D:\apps\rocketmq
.\bin\mqnamesrv.cmd
保持窗口开启。
- 新开 PowerShell,启动 Broker:
Set-Location D:\apps\rocketmq
.\bin\mqbroker.cmd -n 127.0.0.1:9876
- 查看集群:
.\bin\mqadmin.cmd clusterList -n 127.0.0.1:9876
Windows 更适合本机调试。长期部署建议使用 Ubuntu,并用 systemd 管理进程。
Ubuntu 安装部署 RocketMQ
- 安装 JDK 21 后创建目录:
sudo mkdir -p /opt/rocketmq
sudo chown -R "$USER":"$USER" /opt/rocketmq
- 下载并解压二进制包。版本号以官方下载页为准:
cd /tmp
curl -fLO https://archive.apache.org/dist/rocketmq/5.3.0/rocketmq-all-5.3.0-bin-release.zip
unzip rocketmq-all-5.3.0-bin-release.zip
mv rocketmq-all-5.3.0-bin-release/* /opt/rocketmq/
- 小内存机器先调整 JVM。编辑
bin/runserver.sh和bin/runbroker.sh,把默认大堆内存调整为适合测试环境的值,例如:
-Xms512m -Xmx512m -Xmn256m
- 启动 NameServer:
cd /opt/rocketmq
nohup sh bin/mqnamesrv > /opt/rocketmq/namesrv.log 2>&1 &
- 启动 Broker:
cd /opt/rocketmq
nohup sh bin/mqbroker -n 127.0.0.1:9876 > /opt/rocketmq/broker.log 2>&1 &
- 验证:
sh bin/mqadmin clusterList -n 127.0.0.1:9876
ss -lntp | grep 9876
macOS 安装部署 RocketMQ
-
安装 JDK 21 并下载二进制包,解压到例如
~/apps/rocketmq。 -
调整
bin/runserver.sh和bin/runbroker.sh的 JVM 内存。 -
启动 NameServer:
cd ~/apps/rocketmq
nohup sh bin/mqnamesrv > namesrv.log 2>&1 &
- 启动 Broker:
nohup sh bin/mqbroker -n 127.0.0.1:9876 > broker.log 2>&1 &
- 验证:
sh bin/mqadmin clusterList -n 127.0.0.1:9876
生产部署建议
- NameServer 和 Broker 分开规划,不要和应用混抢内存。
- 生产必须配置
brokerIP1为服务器内网或可达 IP。 - 刷盘和副本策略要按业务可靠性要求选择,先写清 RPO 和 RTO。
- 消息轨迹和死信队列要提前开启或设计。
- 事务消息只解决最终一致,不能替代本地事务。
- 队列不是越多越好,顺序消息还要评估单队列热点。
常见问题
connect to broker failed 通常和 brokerIP1、端口、防火墙有关。客户端拿到的是 Broker 返回的地址,不只是 NameServer 地址。
启动立即退出先看日志里的 JVM 大小。默认脚本常见 Xms4g 配置,小机器会直接起不来。
消息发送超时要同时检查磁盘、网络、Broker 压力和客户端线程池,不要只重试发送。