linux下启动第二个RocketMQ,报错java.lang.RuntimeException: Lock failed,MQ already started..... 解决方案

报错如下图:

 

这种情况下启动两个broker, 基本都会在第二个broker, 报lock failed, MQ already started

因为使用了相同的默认配置(只启动一个broker不受影响) 

不同的配置, 需求满足最基本的配置不同 

brokerName 不同 
brokerId 不同 
listenPort 不同 
storePathRootDir 不同 


相同的配置 ◦与 不带操作项 的情况类似, 会导致 lock failed, MQ already started 

 

解决办法:

RocketMq修改namesrv和broker默认端口

1、修改namesrv默认端口(默认9876)

在rocket的conf目录下添加namesrv.properties文件,文件中添加端口配置

listenPort=8876

2、修改broker默认端口(默认10911)

在rocket的conf目录下修改broker.conf文件,配置修改如下

brokerClusterName = DefaultCluster1
brokerName = broker-b
brokerId = 1
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER1
flushDiskType = ASYNC_FLUSH1
# 新增的配置,broker默认端口
namesrvAddr=192.167.6.73:8876
brokerIP1=192.167.6.73
listenPort=8911
storePathRootDir=/opt/xxx/xxx

3、使用配置信息后台启动,先启动 NameServer  再启动Broker

使用配置信息后台启动namesrv
nohup sh bin/mqnamesrv -c conf/namesrv.properties > /logs/mqname.log 2>&1& 
使用配置信息后台启动broker
nohup sh bin/mqbroker -n localhost:8876 -c conf/broker.conf > /logs/mqbroker.log 2>&1&

4、使用命令jps或日志查看是否正常启动

 

posted @ 2025-01-09 10:34  攻城狮-tester  阅读(339)  评论(0)    收藏  举报