最近開始是使用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。。。