一、问题背景
在Windwos上安装完RocketMQ,配置完环境之后,启动RocketMQ环境mqnamesrv和mqbroker都正常启动完毕,项目采用SpringBoot框架,启动SpringBoot主程序运行报错,异常信息如下:
MQClientException: No route info of this topic, topic2019
通过对这个问题的总结,这里做一个比较全面的问题汇总,将出现上述异常的可能性都列举出来,防止大家走弯路。
二、报错截图如下
三、我的项目配置如下
四、分析问题
从上面的报错信息“No route info of this topic, topic2019” 来看,大概意思是说在路由里面没有发现主题topic2019,这时候比较郁闷,明明配置了,为神马就是找不到这个主题呢,百度谷歌了一番,有如下结论的可能性:
- 1.配置
autoCreateTopicEnable=true
,如果这个属性没有配置,且你没有手动创建topic
,就会报出上面的异常信息No route info of this topic
也就是Broker禁止自动创建Topic,且用户没有通过手工方式创建Topic。 - 2.
Broker
没有正确连接到Name Server
- 3.
Producer
没有正确连接到Name Server
- 4.缺少
fastjson
包或者fastjson
包版本不对 - 5.
Windwos
下mq
的安装版本和pom.xml
中使用的jar
包版本不对 - 6.防火墙未关闭问题
五、问题原因
检查Windwos下
mq的安装版本和
pom.xml中使用的
jar`包版本是一致,以及其他几个可能存在的问题后,排除2、3、4、5、6这5种可能之后,我的问题定位到了,就是第一个原因:Broker禁止自动创建Topic,并且用户没有通过手工方式创建Topic
六、解决方式
找到Windwos
下RocketMQ
的安装目录,新建两个批处理文件,分别以Broker
结尾命名和以Server
结尾命名,如下图:
1. Broker结尾文件写入内容如下
mqbroker -n localhost:9876 autoCreateTopicEnable=true
2. Server结尾文件写入内容如下
start mqnamesrv.cmd
创建两个批处理文件是因为Windwos下每次启动这两个服务需要在命令切换到安装目录启动,写成批处理文件方便双击启动即可,在上述配置修改完毕之后,先后启动caowencaoServer.bat
和caowencaoBroker.bat
考虑到大家想下载即可使用,已经将RocketMQ-4.3.2
包上传至,下载即可。