原创

RocketMQ 解决 No route info of this topic 异常处理方法

rocketmq运行时提示 No route info of this topic 异常产生的原因可能是如下几方面:

10cd583d77931882f16d260e7ad9dd4.png

1)Broker禁止自动创建Topic,且用户没有通过手工方式创建Topic

2)Broker没有正确连接到Name Server

3)Producer没有正确连接到Name Server 

首先解决1这种情况,启动顺序要先启动nameserver,再启动broker,启动broker时加上autoCreateTopicEnable=true 

例如 nohup sh mqbroker -n localhost:9876 autoCreateTopicEnable=true &

启动没有异常检查下nameserver中是否成功注册了broker,有两种方式 

第一种、看broker的日志 如果出现形如

2021-11-24 11:23:35 INFO BrokerControllerScheduledThread1 - register broker to name server 192.168.192.129:9876 OK
2021-11-24 11:23:45 INFO BrokerControllerScheduledThread1 - register broker to name server 192.168.192.129:9876 OK

证明已经连接到nameserver上

第二种、 在bin目录下执行命令sh mqadmin clusterList -n localhost:9876 如果看到

#Cluster Name     
#Broker Name            
#BID  
#Addr                  
#Version                
#InTPS(LOAD)       
#OutTPS(LOAD) 
#PCWait(ms) 
#Hour 
#SPACE
DefaultCluster    
DEFAULT_BROKER          
0     
192.168.192.129:10911  
V4_2_0_SNAPSHOT          
0.00(0,0ms)         
0.00(0,0ms)          
0 
422168.55 -1.0000

也是证明已经连接到nameserver上。

如果按前两步检查没有问题,但启动还是报错,那么剩下的可能原因是producer无法连接到nameserver,很可能是防火墙的原因 ,要检验猜测只需要关闭防火墙,命令为systemctl stop firewalld.service

然后再次验证,应该已经可以使用了。

Linux系统

在启动mqbroker的时候需要指定 autoCreateTopicEnable=true。例如:

nohup sh mqbroker -n 192.168.180.133:9876 
autoCreateTopicEnable=true > ~/logs/rocketmqlogs/broker.log 2>&1 &

window系统

在window系统下需要在cmd中启动mqbroker才行。命令格式如下:

mqbroker.exe -n localhost:9876autoCreateTopicEnable=true

缺少fastjson jar包也会导致此问题。

~阅读全文-人机检测~

关注下方微信公众号“Java精选”(w_z90110),回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。微信搜索小程序“Java精选面试题”,内涵3000+道Java面试题!

Java精选专注程序员推送一些Java开发知识,包括基础知识、各大流行框架(Mybatis、Spring、Spring Boot等)、大数据技术(Storm、Hadoop、MapReduce、Spark等)、数据库(Mysql、Oracle、NoSQL等)、算法与数据结构、面试专题、面试技巧经验、职业规划以及优质开源项目等。其中一部分由小编总结整理,另一部分来源于网络上优质资源,希望对大家的学习和工作有所帮助。

评论

分享:

支付宝

微信