当前位置: 代码迷 >> 综合 >> 记一次 RocketMQ 的启动问题 com.alibaba.fastjson.JSONException
  详细解决方案

记一次 RocketMQ 的启动问题 com.alibaba.fastjson.JSONException

热度:96   发布时间:2023-12-10 02:31:48.0

最近开始是使用RocketMQ,入门就是在本机上搭建一个最简单的版本的RocketMQ了,第一次启动没啥问题,但是在第二次启动的时候出现了错误。启动nameServer 没啥问题,但是在启动Broker的时候就发现问题了。
而且控制台也没有什么报错信息,反正就是你用命令:

.\mqadmin.cmd clusterList -n localhost:9876

你看不到相关的节点的列表。

PS D:\RocketMQ\rocketmq4.7.0> .\bin\mqadmin.cmd clusterList -n localhost:9876
RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).
RocketMQLog:WARN Please initialize the logger system properly.
#Cluster Name #Broker Name #BID #Addr #Version #InTPS(LOAD) #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE
PS D:\RocketMQ\rocketmq4.7.0>

清一色的空空空。
这个就比较坑了,因为我们只知道启动没成功,但是不清楚到底是什么原因没成功。无法,只能开始一点点摸索了,一般来说就是找日志,但是RocketMQ的日志不会输出在启动的文件夹下面,启动的文件夹下面就这几个文件。
在这里插入图片描述
但是按照项目的经验来说,必然会有日志输出的,而且一般来说这种项目的日志文件都有有不错的输出格式,既然有输出格式,那么就必然有日志的输出的配置文件,只要去找这个配置文件,那么就肯定会发现日志的所在之处。
在这里插入图片描述
在这个conf文件夹下面就发现了
在这里插入图片描述
在这个配置文件夹里看到了日志输出的位置
在这里插入图片描述
接着就在文件broker.log下面发现了错误;
在这里插入图片描述

2020-06-08 12:51:13 ERROR main - load C:\Users\{
    你的主机名字}\store\config\delayOffset.json Failed
com.alibaba.fastjson.JSONException: syntax error, expect {
    , actual EOF, pos 21, fastjson-version 1.2.62at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:505) ~[fastjson-1.2.62.jar:na]at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.parseRest(JavaBeanDeserializer.java:1555) ~[fastjson-1.2.62.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.62.jar:na]at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:687) ~[fastjson-1.2.62.jar:na]at com.alibaba.fastjson.JSON.parseObject(JSON.java:383) ~[fastjson-1.2.62.jar:na]at com.alibaba.fastjson.JSON.parseObject(JSON.java:287) ~[fastjson-1.2.62.jar:na]at com.alibaba.fastjson.JSON.parseObject(JSON.java:560) ~[fastjson-1.2.62.jar:na]at org.apache.rocketmq.remoting.protocol.RemotingSerializable.fromJson(RemotingSerializable.java:43) ~[rocketmq-remoting-4.7.0.jar:4.7.0]at org.apache.rocketmq.store.schedule.ScheduleMessageService.decode(ScheduleMessageService.java:180) [rocketmq-store-4.7.0.jar:4.7.0]at org.apache.rocketmq.common.ConfigManager.loadBak(ConfigManager.java:56) [rocketmq-common-4.7.0.jar:4.7.0]at org.apache.rocketmq.common.ConfigManager.load(ConfigManager.java:44) [rocketmq-common-4.7.0.jar:4.7.0]at org.apache.rocketmq.store.schedule.ScheduleMessageService.load(ScheduleMessageService.java:165) [rocketmq-store-4.7.0.jar:4.7.0]at org.apache.rocketmq.store.DefaultMessageStore.load(DefaultMessageStore.java:185) [rocketmq-store-4.7.0.jar:4.7.0]at org.apache.rocketmq.broker.BrokerController.initialize(BrokerController.java:261) [rocketmq-broker-4.7.0.jar:4.7.0]at org.apache.rocketmq.broker.BrokerStartup.createBrokerController(BrokerStartup.java:222) [rocketmq-broker-4.7.0.jar:4.7.0]

好了真相大白了,就是读取配置文件的时候出现了错误。
那么如何解决呢。。。我决定先打开这个读取的有问题的文件看看,到底是个啥情况。
结果 打开,一堆乱码,可能是我怀疑启动了一些别的程序,修改了这个 json 文件导致的乱码。这些配置文件,然后我思考一下,毕竟是刚刚启动没多久,没啥重要的修改,索性就把整个 config 文件夹下面的都删除了,反正就当Broker第一次启动,他肯定会去创建这些文件的。。然后再启动 Broker 恩。。。成功了。。。就是这么的简单粗暴。。。
再来看看节点列表:

D:\RocketMQ\rocketmq4.7.0> .\bin\mqadmin.cmd clusterList -n localhost:9876
RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).
RocketMQLog:WARN Please initialize the logger system properly.
#Cluster Name #Broker Name #BID #Addr #Version #InTPS(LOAD) #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE
DefaultCluster    DESKTOP-HDGALOV         0     192.168.8.102:10911    V4_7_0                   0.00(0,0ms)         0.00(0,0ms)          0 442110.02 0.2890
PS D:\RocketMQ\rocketmq4.7.0>

好了,本机节点已经出现在这里了。
至于到底是什么导致文件出现问题,这个就有待考证了。To be continued。。。

  相关解决方案