问题现象
windows环境rocketMq启动mqbroker.cmd无反应。
问题排查
这时我们找到rocketmq的日志,打开看一下日志C:\Users\admin\logs\rocketmqlogs\broker.log是否有提示。
果然有,具体报错load C:\Users\admin\store\config\delayOffset.json failed, and try to load backup file
com.alibaba.fastjson.JSONException: syntax error, expect {, actual EOF, pos 21, fastjson-version 1.2.61
详细报错信息:
2022-08-27 18:37:03 ERROR main - load C:\Users\admin\store\config\delayOffset.json failed, and try to load backup file
com.alibaba.fastjson.JSONException: syntax error, expect {, actual EOF, pos 21, fastjson-version 1.2.61
at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:489) ~[fastjson-1.2.61.jar:na]
at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.parseRest(JavaBeanDeserializer.java:1539) ~[fastjson-1.2.61.jar:na]
at com.alibaba.fastjson.parser.deserializer.FastjsonASMDeserializer_7_DelayOffsetSerializeWrapper.deserialze(Unknown Source) ~[na:na]
at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:284) ~[fastjson-1.2.61.jar:na]
at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:682) ~[fastjson-1.2.61.jar:na]
at com.alibaba.fastjson.JSON.parseObject(JSON.java:383) ~[fastjson-1.2.61.jar:na]
at com.alibaba.fastjson.JSON.parseObject(JSON.java:287) ~[fastjson-1.2.61.jar:na]
at com.alibaba.fastjson.JSON.parseObject(JSON.java:560) ~[fastjson-1.2.61.jar:na]
at org.apache.rocketmq.remoting.protocol.RemotingSerializable.fromJson(RemotingSerializable.java:43) ~[rocketmq-remoting-4.6.0.jar:4.6.0]
at org.apache.rocketmq.store.schedule.ScheduleMessageService.decode(ScheduleMessageService.java:179) [rocketmq-store-4.6.0.jar:4.6.0]
at org.apache.rocketmq.common.ConfigManager.load(ConfigManager.java:38) ~[rocketmq-common-4.6.0.jar:4.6.0]
at org.apache.rocketmq.store.schedule.ScheduleMessageService.load(ScheduleMessageService.java:164) [rocketmq-store-4.6.0.jar:4.6.0]
at org.apache.rocketmq.store.DefaultMessageStore.load(DefaultMessageStore.java:184) [rocketmq-store-4.6.0.jar:4.6.0]
at org.apache.rocketmq.broker.BrokerController.initialize(BrokerController.java:261) [rocketmq-broker-4.6.0.jar:4.6.0]
at org.apache.rocketmq.broker.BrokerStartup.createBrokerController(BrokerStartup.java:222) [rocketmq-broker-4.6.0.jar:4.6.0]
at org.apache.rocketmq.broker.BrokerStartup.main(BrokerStartup.java:58) [rocketmq-broker-4.6.0.jar:4.6.0]
2022-08-27 18:37:03 ERROR main - load C:\Users\admin\store\config\delayOffset.json Failed
com.alibaba.fastjson.JSONException: syntax error, expect {, actual EOF, pos 21, fastjson-version 1.2.61
at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:489) ~[fastjson-1.2.61.jar:na]
at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.parseRest(JavaBeanDeserializer.java:1539) ~[fastjson-1.2.61.jar:na]
at com.alibaba.fastjson.parser.deserializer.FastjsonASMDeserializer_7_DelayOffsetSerializeWrapper.deserialze(Unknown Source) ~[na:na]
at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:284) ~[fastjson-1.2.61.jar:na]
at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:682) ~[fastjson-1.2.61.jar:na]
at com.alibaba.fastjson.JSON.parseObject(JSON.java:383) ~[fastjson-1.2.61.jar:na]
at com.alibaba.fastjson.JSON.parseObject(JSON.java:287) ~[fastjson-1.2.61.jar:na]
at com.alibaba.fastjson.JSON.parseObject(JSON.java:560) ~[fastjson-1.2.61.jar:na]
at org.apache.rocketmq.remoting.protocol.RemotingSerializable.fromJson(RemotingSerializable.java:43) ~[rocketmq-remoting-4.6.0.jar:4.6.0]
at org.apache.rocketmq.store.schedule.ScheduleMessageService.decode(ScheduleMessageService.java:179) [rocketmq-store-4.6.0.jar:4.6.0]
at org.apache.rocketmq.common.ConfigManager.loadBak(ConfigManager.java:56) [rocketmq-common-4.6.0.jar:4.6.0]
at org.apache.rocketmq.common.ConfigManager.load(ConfigManager.java:44) [rocketmq-common-4.6.0.jar:4.6.0]
at org.apache.rocketmq.store.schedule.ScheduleMessageService.load(ScheduleMessageService.java:164) [rocketmq-store-4.6.0.jar:4.6.0]
at org.apache.rocketmq.store.DefaultMessageStore.load(DefaultMessageStore.java:184) [rocketmq-store-4.6.0.jar:4.6.0]
at org.apache.rocketmq.broker.BrokerController.initialize(BrokerController.java:261) [rocketmq-broker-4.6.0.jar:4.6.0]
at org.apache.rocketmq.broker.BrokerStartup.createBrokerController(BrokerStartup.java:222) [rocketmq-broker-4.6.0.jar:4.6.0]
at org.apache.rocketmq.broker.BrokerStartup.main(BrokerStartup.java:58) [rocketmq-broker-4.6.0.jar:4.6.0]
意思就是加载delayOffset.json文件失败,加载其备份文件也失败,下面具体失败原因是解析json失败,大概率是json字符串不是json格式。
那么我们就找一下,看看文件内容
问题原因
打开delayOffset.json和delayOffset.json.bak文件,发现里面啥也没有,仔细一看是好几个空格或者制表符。
解决办法
打开delayOffset.json和delayOffset.json.bak文件,把这俩文件中的空字符都删了,并输入{},然后保存,再次启动就好了。
关于这个问题,启动无法应的原因很多,可能每个人的不一样,仅供参考哦。