bin>mqbroker.cmd -c ../conf/2m-2s-async/broker-b-s.properties 错误信息:Lock failed,MQ already started

本文详细解析了在启动RocketMQ集群时遇到的Lock failed, MQ already started异常,指出该问题是由于master和slave节点共用了同一storePath路径。通过调整配置文件中的storePathRootDir和storePathCommitLog属性,为每个broker指定独立的存储路径,成功解决了启动冲突问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

E:\home\rocketmq-all-4.6.0-bin-release\bin>mqbroker.cmd -c ../conf/2m-2s-async/broker-b-s.properties
java.lang.RuntimeException: Lock failed,MQ already started
        at org.apache.rocketmq.store.DefaultMessageStore.start(DefaultMessageStore.java:222)
        at org.apache.rocketmq.broker.BrokerController.start(BrokerController.java:853)
        at org.apache.rocketmq.broker.BrokerStartup.start(BrokerStartup.java:64)
        at org.apache.rocketmq.broker.BrokerStartup.main(BrokerStartup.java:58)

原因:在集群中master和slave共用一个storePath造成的

解决方案:我们要启动的每一个broker要指定不一样的storePath 路径就行,也就是在我们的配置文件中修改即可,如更改配置文件storePathRootDir和storePathCommitLog属性路径

broker-a.properties

storePathRootDir=E:/home/rocketmq-all-4.6.0-bin-release/data/broker-a/store
storePathCommitLog=E:/home/rocketmq-all-4.6.0-bin-release/data/broker-a/store/commitlog

broker-a-s.properties

storePathRootDir=E:/home/rocketmq-all-4.6.0-bin-release/data/broker-a-s/store
storePathCommitLog=E:/home/rocketmq-all-4.6.0-bin-release/data/broker-a-s/store/commitlog

broker-b.properties和broker-b-s.properties同理

 

### Windows 系统上部署 RocketMQ 单机版教程 在 Windows 系统上部署 RocketMQ 的单机版,需要完成以下操作:下载并解压 RocketMQ 安装包、配置环境变量、创建必要的目录结构以及启动服务。以下是详细的部署过程。 #### 1. 下载 RocketMQ 安装包 从官方地址下载 RocketMQ 的二进制版本安装包[^1]: ```plaintext https://dist.apache.org/repos/dist/release/rocketmq/5.0.0/rocketmq-all-5.0.0-bin-release.zip ``` 如果无法访问上述链接,可以使用百度网盘提供的镜像文件: ```plaintext https://pan.baidu.com/s/1kyybjTSeJzZ2bf8js_QZFg?pwd=uxns ``` 下载完成后,将压缩包解压到指定目录,例如 `D:\rocketmq`。 #### 2. 配置环境变量 在 Windows 系统中配置 RocketMQ 的环境变量。右键点击“此电脑”或“我的电脑”,选择“属性” -> “高级系统设置” -> “环境变量”。 - 新建一个系统变量 `ROCKETMQ_HOME`,值为 RocketMQ 的解压路径,例如 `D:\rocketmq\rocketmq-all-5.0.0-bin-release`。 - 将 `%ROCKETMQ_HOME%\bin` 添加到系统的 `PATH` 变量中。 完成后,打开命令提示符(CMD),输入以下命令验证是否配置成功: ```cmd set ROCKETMQ_HOME ``` 如果返回了正确的路径,则说明配置成功。 #### 3. 创建存储目录 在 RocketMQ 的解压目录下创建存储日志和消息的目录[^3]: ```cmd cd D:\rocketmq\rocketmq-all-5.0.0-bin-release mkdir store mkdir logs cd store mkdir commitlog ``` #### 4. 修改配置文件 进入 RocketMQ 的配置目录,编辑 `conf/broker.conf` 文件,修改以下关键参数以适配本地环境[^4]: ```properties brokerClusterName=DefaultCluster brokerName=broker-a brokerId=0 deleteWhen=04 fileReservedTime=48 brokerRole=ASYNC_MASTER flushDiskType=ASYNC_FLUSH storePathRootDir=D:\\rocketmq\\store storePathCommitLog=D:\\rocketmq\\store\\commitlog storePathConsumerQueue=D:\\rocketmq\\store\\consumequeue storePathIndex=D:\\rocketmq\\store\\index storeCheckpoint=D:\\rocketmq\\store\\checkpoint abortFile=D:\\rocketmq\\store\\abort ``` #### 5. 启动 NameServer 和 Broker 在命令提示符中依次执行以下命令启动 NameServer 和 Broker[^2]: ```cmd # 启动 NameServer nohup sh bin/mqnamesrv > D:\rocketmq\namesrv.log 2>&1 & # 启动 Broker nohup sh bin/mqbroker -n localhost:9876 brokerAddressURI=tcp://localhost:10911 > D:\rocketmq\broker.log 2>&1 & ``` 注意:在 Windows 系统中,可以直接运行 `.bat` 脚本代替 `.sh` 脚本。例如: ```cmd # 启动 NameServer start /b cmd /c bin/mqnamesrv.bat # 启动 Broker start /b cmd /c bin/mqbroker.bat -n localhost:9876 brokerAddressURI=tcp://localhost:10911 ``` #### 6. 验证 RocketMQ 是否启动成功 打开浏览器,访问以下地址检查 NameServer 和 Broker 是否正常运行: ```plaintext http://localhost:8080 ``` 如果页面显示 RocketMQ 控制台,则说明部署成功。 #### 7. 测试消息发送与接收 使用 RocketMQ 提供的示例工具测试消息发送与接收功能。执行以下命令发送一条测试消息: ```cmd sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer ``` 然后执行以下命令接收消息: ```cmd sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值