RocketMQ 5.3.2 Windows 单机部署:3步启动与端口占用排查(附防火墙规则)
RocketMQ 5.3.2 Windows 单机部署3步极简启动与端口占用排查指南1. 环境准备与快速部署方案对于需要在Windows本地开发环境搭建RocketMQ的Java开发者来说5.3.2版本带来了更简化的部署体验。我们将通过三个核心步骤完成基础环境搭建系统要求检查清单操作系统Windows 10/11 64位JDK版本1.8建议OpenJDK 11磁盘空间至少500MB可用空间内存建议4GB以上空闲内存部署前置操作下载二进制发行包推荐使用清华镜像加速curl -O https://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/5.3.2/rocketmq-all-5.3.2-bin-release.zip解压到不含中文和空格的路径例如tar -zxvf rocketmq-all-5.3.2-bin-release.zip -C C:\dev_tools\2. 三步骤快速启动方案2.1 一键启动NameServer创建start_namesrv.cmd脚本文件内容如下echo off set ROCKETMQ_HOMEC:\dev_tools\rocketmq-all-5.3.2-bin-release start RocketMQ NameServer %ROCKETMQ_HOME%\bin\mqnamesrv.cmd2.2 代理集成模式启动Broker创建start_broker.cmd脚本文件echo off set ROCKETMQ_HOMEC:\dev_tools\rocketmq-all-5.3.2-bin-release start RocketMQ Broker %ROCKETMQ_HOME%\bin\mqbroker.cmd -n 127.0.0.1:9876 --enable-proxy autoCreateTopicEnabletrue2.3 验证服务状态创建check_status.cmd验证脚本echo off tail -f %ROCKETMQ_HOME%\logs\rocketmqlogs\namesrv.log tail -f %ROCKETMQ_HOME%\logs\rocketmqlogs\proxy.log关键日志确认点NameServer成功日志The Name Server boot success...Broker成功日志The broker[broker-a,192.168.1.2:10911] boot success...3. Windows特有问题解决方案3.1 端口占用排查流程图graph TD A[服务启动失败] -- B{检查端口占用} B --|9876端口| C[netstat -ano | findstr 9876] B --|10911端口| D[netstat -ano | findstr 10911] C -- E[taskkill /PID 占用进程ID /F] D -- E E -- F[重新启动服务]3.2 防火墙配置指南使用管理员权限执行以下PowerShell命令New-NetFirewallRule -DisplayName RocketMQ Ports -Direction Inbound -LocalPort 9876,10909,10911,8080 -Protocol TCP -Action Allow端口作用说明表端口号服务类型通信方向必需性9876NameServer入站/出站必需10911Broker入站必需10909Broker HA入站可选8080Dashboard入站可选3.3 内存调整方案对于8GB以下内存设备修改runbroker.cmdset JAVA_OPT%JAVA_OPT% -Xms1g -Xmx1g -Xmn512m调整为set JAVA_OPT%JAVA_OPT% -Xms512m -Xmx512m -Xmn256m4. 验证与基础测试4.1 命令行测试set NAMESRV_ADDRlocalhost:9876 :: 生产者测试 tools.cmd org.apache.rocketmq.example.quickstart.Producer :: 消费者测试 tools.cmd org.apache.rocketmq.example.quickstart.Consumer4.2 Java客户端测试创建Maven项目并添加依赖dependency groupIdorg.apache.rocketmq/groupId artifactIdrocketmq-client/artifactId version5.3.2/version /dependency生产者示例代码public class SimpleProducer { public static void main(String[] args) throws Exception { DefaultMQProducer producer new DefaultMQProducer(DemoProducerGroup); producer.setNamesrvAddr(localhost:9876); producer.start(); Message msg new Message(TestTopic, TagA, (Hello RocketMQ).getBytes(StandardCharsets.UTF_8)); SendResult result producer.send(msg); System.out.println(Send result: result); producer.shutdown(); } }消费者示例代码public class SimpleConsumer { public static void main(String[] args) throws Exception { DefaultMQPushConsumer consumer new DefaultMQPushConsumer(DemoConsumerGroup); consumer.setNamesrvAddr(localhost:9876); consumer.subscribe(TestTopic, *); consumer.registerMessageListener((MessageListenerConcurrently) (msgs, context) - { msgs.forEach(msg - { System.out.println(Received: new String(msg.getBody())); }); return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; }); consumer.start(); System.out.println(Consumer started.); } }5. 管理控制台部署5.1 控制台快速安装git clone https://github.com/apache/rocketmq-dashboard.git cd rocketmq-dashboard mvn clean package -DskipTests java -jar target/rocketmq-dashboard-1.0.0.jar关键配置项server.port8080 rocketmq.config.namesrvAddrslocalhost:98765.2 控制台功能速览集群概览监控主题管理界面消费者组追踪消息轨迹查询运维操作入口6. 生产环境注意事项性能调优参数表参数名默认值建议值作用域sendMsgTimeout3000ms5000ms生产者compressMsgBodyOverHowm4096字节8192字节生产者maxMessageSize4MB根据业务调整BrokerflushDiskTypeASYNCSYNC_FLUSH高可靠性场景日志维护建议定期清理~/logs/rocketmqlogs/目录配置日志轮转策略使用logrotate工具敏感信息过滤避免在日志中打印消息内容7. 版本升级指南从4.x迁移到5.x的关键变更点代理层(Proxy)的引入gRPC协议支持消息轨迹功能增强新的客户端API推荐使用增强的ACL控制兼容性矩阵组件4.x兼容性5.x兼容性旧版客户端✓✗新版客户端✗✓控制台部分功能完全支持8. 排错工具箱常见错误代码速查表错误代码含义解决方案206无路由信息检查Topic是否存在301Broker不可用检查Broker进程状态303网络连接异常验证防火墙和网络配置401ACL校验失败检查权限配置诊断命令集合:: 查看NameServer状态 mqadmin.cmd clusterList -n localhost:9876 :: 检查Topic路由 mqadmin.cmd topicRoute -n localhost:9876 -t TestTopic :: 消费者进度查询 mqadmin.cmd consumerProgress -n localhost:9876 -g DemoConsumerGroup