一、问题背景

在Windwos上安装完RocketMQ,配置完环境之后,启动RocketMQ环境mqnamesrv和mqbroker都正常启动完毕,项目采用SpringBoot框架,启动SpringBoot主程序运行报错,异常信息如下:

MQClientException: No route info of this topic, topic2019

通过对这个问题的总结,这里做一个比较全面的问题汇总,将出现上述异常的可能性都列举出来,防止大家走弯路。

二、报错截图如下

rocketmq 启动nameserver报错_RocketMQ

三、我的项目配置如下

rocketmq 启动nameserver报错_Server_02

四、分析问题

从上面的报错信息“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.Windwosmq的安装版本和pom.xml中使用的jar包版本不对
  • 6.防火墙未关闭问题

五、问题原因

检查Windwosmq的安装版本和pom.xml中使用的jar`包版本是一致,以及其他几个可能存在的问题后,排除2、3、4、5、6这5种可能之后,我的问题定位到了,就是第一个原因:Broker禁止自动创建Topic,并且用户没有通过手工方式创建Topic

六、解决方式

找到WindwosRocketMQ的安装目录,新建两个批处理文件,分别以Broker结尾命名和以Server结尾命名,如下图:

rocketmq 启动nameserver报错_RocketMQ_03

1. Broker结尾文件写入内容如下

mqbroker -n localhost:9876 autoCreateTopicEnable=true

2. Server结尾文件写入内容如下

start mqnamesrv.cmd

创建两个批处理文件是因为Windwos下每次启动这两个服务需要在命令切换到安装目录启动,写成批处理文件方便双击启动即可,在上述配置修改完毕之后,先后启动caowencaoServer.batcaowencaoBroker.bat

考虑到大家想下载即可使用,已经将RocketMQ-4.3.2包上传至,下载即可。