最近用SpringBoot集成RocketMQ實現消息實時推送,一直卡在本地啟動RocketMQ失敗。現在先記錄一下,以后看時間解決。當然,如果有好心的朋友,可以提供解決方案(#^.^#)。
我用的是Apache包,SpringBoot有RocketMQ starter,這個后面再講。
1 <dependency> 2 <groupId>org.apache.rocketmq</groupId> 3 <artifactId>rocketmq-client</artifactId> 4 <version>4.7.0</version> 5 </dependency>
這個組件很奇怪,在本地環境玩,需要配置外網,否則本地起不來,也就用不了。
遇到的問題
1、連接失敗Caused by: java.lang.IllegalStateException: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to null failed
- 在broker.conf、conf\2m-noslave\broker-a.properties或者其他broker配置文件中添加配置
- brokerIP1=XX.XX.XX.XX
- 啟動namesrv,broker
- 這里要注意先啟動namesrv,再啟動broker。
- 啟動namesrv,broker命令,mqnamesrv.cmd,mqbroker.cmd。
- 這點很重要,你在broker配置文件中配置了外網,但是要結合命令才行,不然它會找默認的內網。命令,mqbroker.cmd -n localhost:9876 -c ../conf/2m-2s-async/broker-b.properties。
2、啟動application失敗,org.apache.rocketmq.client.exception.MQClientException: No route info for this topic, user-topic
- 在程序中,producer和consumer中設置namesrvAdrr為XX.XX.XX.XX:9876
3、啟動application rocketmq就關閉,[lientSelector_1] RocketmqRemoting : closeChannel: close the connection to remote address[] result: true。
用mqadmin clusterList -n localhost:9876,發現org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to [XX.XX.XX.XX:9876] failed。
防火牆設置了9876等3個端口,最后防火牆也關了,還是不行。也試了很多其他外網IP,也是不行。
源代碼在https://github.com/Ivyvivid/Practice-RocketMQ,等解決了再更新O(∩_∩)O。