在windows上部署RocketMQ步骤
Apache RocketMQ:定义与核心作用
一、定义
Apache RocketMQ 是由阿里巴巴开源、后捐赠给 Apache 基金会的分布式消息队列(Message Queue) 中间件,是一款高性能、高可靠、可扩展的异步消息传递与事件驱动系统,用于在分布式系统中实现解耦、异步、削峰填谷等核心能力。
二、核心作用(解决什么问题)
RocketMQ 主要解决分布式架构下的三大核心问题:
1. 系统解耦(Decoupling)
◦ 生产者(Producer)与消费者(Consumer)不直接依赖,通过消息中间件间接通信;
◦ 一方故障不影响另一方,系统扩展性与稳定性大幅提升。
2. 异步处理(Asynchronous)
◦ 非核心流程(如日志、通知、统计)异步执行,不阻塞主流程;
◦ 提升接口响应速度,改善用户体验。
3. 削峰填谷(Peak Shaving)
◦ 流量突增时,消息先存入队列,消费者按自身能力消费;
◦ 保护后端服务不被瞬间高流量压垮。
三、核心功能特性
• 高性能:单机吞吐量可达 10 万 + TPS,低延迟(毫秒级)。
• 高可靠:消息持久化、多副本、重试机制、死信队列,确保消息不丢失、不重复。
• 高可用:主从架构、自动故障转移、集群部署,支持 7×24 小时运行。
• 可扩展:水平扩展 Broker 集群,支持百万级 Topic、亿级消息堆积。
• 丰富特性:顺序消息、事务消息、定时 / 延迟消息、批量消息、消息过滤、轨迹追踪等。
四、典型应用场景
• 电商订单:下单后异步通知、库存扣减、物流推送、积分发放。
• 金融交易:支付结果异步通知、风控异步计算、对账异步处理。
• 日志收集:服务日志异步上报、集中存储与分析。
• 大数据流:实时数据采集、流式计算(Flink/Spark)数据源。
• 微服务通信:服务间异步解耦、事件驱动架构(EDA)。
五、核心角色(架构)
• Producer:消息生产者,发送消息到 Broker。
• Consumer:消息消费者,从 Broker 拉取 / 推送消息。
• Broker:消息存储与转发节点,负责消息持久化、路由、高可用。
• NameServer:注册中心,管理 Broker 集群、提供路由发现。

简单一句话总结:RocketMQ 是分布式系统的 “消息总线”,让服务之间异步、解耦、稳定通信,扛住高并发、保证消息可靠
下面是具体部署操作步骤
首先点击下面链接下载需要的版本,这里我用到的是4.6.0版本
Blog | RocketMQ
https://rocketmq.apache.org/release-notes/
一般情况下,我们可以直接使用 Binary 版本,它是 RocketMQ 已经编译好,可以直接使用的 RocketMQ 软件包。
这里,想编译一次 RocketMQ 源码,所以使用 Source 版本。
提醒:本文有报错经历,请先看完全文再进行配置学习,在内存配置那一块。
1.下载完成后进行解压操作
2.打开 CMD,进入源码目录

注意一定要进入先进入到包含 pom.xml 的根目录,不然后续执行编译命令就会出现我这种情况

3.执行编译命令(跳过测试)
mvn -Prelease-all -DskipTests clean install -U

4.在源码根目录下,执行以下命令,进入编译生成的发布包目录:
cd distribution\target\rocketmq-4.6.0\rocketmq-4.6.0
5.执行 dir 命令,查看当前目录下的文件和子目录。如果看到 bin、conf、lib 等文件夹,就说明你已经成功进入了正确的目录,后续的启动脚本都在这个目录的 bin 文件夹下。

6.配置环境变量
-
打开环境变量设置界面
- 右键点击桌面「此电脑」→ 选择「属性」;
- 点击右侧「高级系统设置」→ 在弹出的「系统属性」窗口中选择「高级」标签 → 点击「环境变量」。
-
新建系统级 ROCKETMQ_HOME 变量
- 在「系统变量」区域点击「新建」;
- 「变量名」输入:
ROCKETMQ_HOME; - 「变量值」输入:你找到的 RocketMQ 发布包目录(例如
C:\Users\86176\Downloads\rocketmq-all-4.6.0-source-release\rocketmq-all-4.6.0-source-release\distribution\target\rocketmq-4.6.0\rocketmq-4.6.0); - 点击「确定」保存。

-
添加 Path 变量(可选,方便全局执行命令)
- 在「系统变量」中找到
Path变量,双击打开; - 点击「新建」→ 输入:
%ROCKETMQ_HOME%\bin; - 连续点击「确定」关闭所有窗口,环境变量立即生效。

- 在「系统变量」中找到
-
验证环境变量
-
按下
Win+R输入cmd打开命令提示符,执行:echo %ROCKETMQ_HOME%如果输出你配置的发布包路径,说明环境变量配置成功。
-

-
7.启动 NameServer 和 Broker(核心步骤)
-
关键提醒:必须打开两个独立的 CMD 窗口,分别启动 NameServer 和 Broker,关闭窗口即停止服务。
-
步骤 1:先调整内存配置(避免启动报错)这个内存配置不正确导致后续报错
-
Windows 本地机器内存通常不足 RocketMQ 默认配置,需先修改启动脚本:
1. 进入 %ROCKETMQ_HOME%\bin 目录(即发布包的 bin 文件夹);
2. 找到 runserver.cmd 文件,右键「编辑」(用记事本 / Notepad++ 打开);
3. 找到以下行(通常在文件开头):set "JAVA_OPT=%JAVA_OPT% -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
修改为低内存配置(根据你的电脑内存调整,我的电脑配置(16GB 内存,AMD Ryzen 7 5800H)):set "JAVA_OPT=%JAVA_OPT% -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
4. 同理,打开 runbroker.cmd 文件,找到相同的内存配置行,修改为:set "JAVA_OPT=%JAVA_OPT% -server -Xms2g -Xmx2g"
5. 保存两个文件,关闭编辑器。
步骤 2:启动 NameServer
1. 打开第一个 CMD 窗口,执行命令进入 bin 目录(或直接在 bin 目录地址栏输入 cmd 打开)cd %ROCKETMQ_HOME%\bin2.执行启动命令
start mqnamesrv.cmd3.此时会弹出新的控制台窗口,若看到以下日志,说明 NameServer 启动成功
The Name Server boot success. serializeType=JSON -

-
步骤 3:启动 Broker
-
1.打开第二个 CMD 窗口,同样进入 bin 目录
cd %ROCKETMQ_HOME%\bin2.执行启动命令(关联 NameServer + 允许自动创建 Topic)
start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true3.弹出新窗口后,若看到以下日志,说明 Broker 启动成功
The broker[你的机器名, 127.0.0.1:10911] boot success. serializeType=JSON and name server is 127.0.0.1:9876
快速验证服务是否正常
打开新的 CMD 窗口,执行以下命令发送测试消息
# 进入 bin 目录
cd %ROCKETMQ_HOME%\bin
# 设置 NameServer 地址
set NAMESRV_ADDR=127.0.0.1:9876
# 发送测试消息
tools.cmd org.apache.rocketmq.example.quickstart.Producer
出现报错,核心问题是 Broker 服务因磁盘 / 内存资源阈值触发保护机制而拒绝服务(CODE:14),CL/CQ/INDEX 使用率都达到 93%,这是 RocketMQ 的内置保护策略,目的是防止服务崩溃。

关闭所有控制台窗口,进入 RocketMQ 发布包的 conf 目录,编辑 broker.conf 文件(用记事本打开)
粘贴以下内容
需要将transientStorePoolEnable=true 这条删掉或者改为flase
transientStorePoolEnable 是 RocketMQ 用于锁定物理内存、避免页交换的优化功能,仅在 Linux 系统上有效。
• 在 Windows 上必须关闭此功能,否则会因找不到 mlock 函数而启动失败。
• 关闭后,Broker 依然可以正常工作,只是失去了这一项 Linux 特有的性能优化,对本地测试环境影响不大
# 集群名称
brokerClusterName = DefaultCluster
# Broker 名称
brokerName = broker-a
# Broker ID (0 表示 Master)
brokerId = 0
# NameServer 地址
namesrvAddr = 127.0.0.1:9876
# 允许自动创建 Topic
autoCreateTopicEnable = true
# 异步刷盘(测试环境推荐)
flushDiskType = ASYNC_FLUSH
# 降低资源保护阈值(核心修改)
diskMaxUsedSpaceRatio = 95
# 内存保护阈值(核心修改)
transientStorePoolEnable = true
调整 Broker 内存配置
报错提示 maybe your broker machine memory too small,说明之前修改的内存参数可能仍然不足,或者没有正确生效
修改runbroker.cmd

修改runserver.cmd

进入 RocketMQ 的 bin 目录
cd C:\Users\86176\Downloads\rocketmq-all-4.6.0-source-release\rocketmq-all-4.6.0-source-release\distribution\target\rocketmq-4.6.0\rocketmq-4.6.0\bin
然后执行命令
start mqbroker.cmd -n 127.0.0.1:9876 -c ..\conf\broker.conf

进行重新测试
tools.cmd -Drocketmq.namesrv.addr=127.0.0.1:9876 org.apache.rocketmq.example.quickstart.Producer
反复打印这种 SEND_OK 的日志,就说明消息发送成功了。

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)