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

最近开始是使用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.62
	at 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。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章