記一次 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。。。

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