RocketMQ 5.5.1 单机实战:三分钟启动 broker,三种发送方式实测 15 万 msg/s
一、两环境变量两脚本,broker 就起来了
最常见的启动报错是Please set the ROCKETMQ_HOME variable——脚本靠它定位 lib/。Windows 全流程:
set ROCKETMQ_HOME=D:\rocketmq-all-5.5.1-bin-release set JAVA_HOME=C:\Program Files\Java\jdk21 bin\mqnamesrv.cmd bin\mqbroker.cmd -n 127.0.0.1:9876就绪判据:netstat -ano里 9876 与 10911 都 LISTENING。
二、三种发送方式:一张表看懂怎么选
Java 生产者各发 1000 条实测(OpenJDK 21):
| 方式 | 语义 | 实测 |
|---|---|---|
| 同步 send() | 阻塞等 broker 确认 | OK=1000,RTT 0.678ms |
| 异步 send(cb) | 回调确认 | OK=997,14624 msg/s |
| 单向 sendOneway | 发完即忘 | 153619 msg/s |
选型口诀:关键链路用同步,日志埋点异步打批,可丢指标用单向。异步实测 OK=997/1000——有 4 条确认在窗口期未回收,这正是异步语义的代价,生产要配对账。
三、消费者:PushConsumer 3000 条全追平
PushConsumer 不是推,是框架包好的长轮询拉取。订阅+监听器返回 CONSUME_SUCCESS 即确认:
DefaultMQPushConsumerconsumer=newDefaultMQPushConsumer("contest_consumer_group");consumer.setNamesrvAddr("127.0.0.1:9876");consumer.subscribe("contest_sync","*");consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);consumer.registerMessageListener((MessageListenerConcurrently)(msgs,ctx)->ConsumeConcurrentlyStatus.CONSUME_SUCCESS);consumer.start();实测 3000 条 1.85s 消费完(1622 msg/s)。
四、mqadmin:三分钟学会看消费位点
运维第一命令:
bin\mqadmin.cmd consumerProgress-n127.0.0.1:9876-gcontest_consumer_group看三列:Broker Offset(已存)、Consumer Offset(已消)、Diff(积压)。实测全队列 Diff=0。线上告警第一指标就是 Diff 持续增长。
五、三个踩坑记录
- ROCKETMQ_HOME 不设必挂:脚本第一行就检查;
- 别用 client 单 jar 编译:rocketmq-client 缺 common/remoting 依赖,直接
-cp "发行版\lib\*"版本完美匹配; - JDK 21 可跑:5.5.1 全链路在 OpenJDK 21 下正常。
配套完整工程
RocketMQ 5.5.1 消息队列单机实战(namesrv/broker 启动到三种发送全跑通,附实测工程)
发送全跑通,附实测工程)](https://download.csdn.net/download/achuxin123/93662103)
启动脚本、两个 Java 实验源码与全量运行留档都在工程包里。