SpringBoot集成RocketMQ实现消息实时推送(待完成中。。。)

chenjia00 2020-04-16

最近用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。

相关推荐