SpringBoot集成RocketMQ实现消息实时推送(待完成中。。。)
最近用SpringBoot集成RocketMQ实现消息实时推送,一直卡在本地启动RocketMQ失败。现在先记录一下,以后看时间解决。当然,如果有好心的朋友,可以提供解决方案(#^.^#)。
我用的是Apache包,SpringBoot有RocketMQ starter,这个后面再讲。
<dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>4.7.0</version> </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。