rocketmq python 某个队列不消费_RocketMQ消息发送常见错误与解决方案

点击上方“中间件兴趣圈”,选择“设为星标”

做积极的人,越努力越幸运!

本文将结合自己使用RocketMQ的经验,对消息发送常见的问题进行分享,基本会遵循出现问题,分析问题、解决问题。

1、No route info of this topic

无法找到路由信息,其完整的错误堆栈信息如下:

且很多读者朋友会说Broker端开启了自动创建主题也会出现上述问题。

RocketMQ的路由寻找流程如下图所示:

上面的核心关键点如下:

如果Broker开启了自动创建Topic,在启动的时候会默认创建主题:TBW102,并会随着Broker发送到Nameserver的心跳包汇报给Nameserver,继而从Nameserver查询路由信息时能返回路由信息。

消息发送者在消息发送时首先会查本地缓存,如果本地缓存中存在,直接返回路由信息。

如果缓存不存在,则向Nameserver查询路由信息,如果Nameserver存在该路由信息,就直接返回。

如果Nameserver不存在该topic的路由信息,如果没有开启自动创建主题,则抛出 No route info of this topic。

如果开启了自动创建主题,则使用默认主题向Nameserver查询路由信息,并使用默认Topic的路由信息为自己的路由信息,将不会抛出 No route info of this topic。

通常情况下 No route info of this topic 这个错误一般是在刚搭建RocketMQ,刚入门 RocketMQ遇到的比较多,通常的排查思路如下:

可以通过rocketmq-console查询路由信息是否存在,或使用如下命令查询路由信息:cd ${ROCKETMQ_HOME}/bin

sh ./mqadmin topicRoute -n 127.0.0.1:9876 -t dw_test_0003

其输出结果如下所示:

如果通过命令无法查询到路由信息,则查看Broker是否开启了自动创建topic,参数为:autoCreateTopicEnable,该参数默认为true。但在生产环境不建议开启。

如果开启了自动创建路由信息,但还是抛出这个错误,这个时候请检查客户端(Producer)连接的Nameserver地址是

你可能感兴趣的:(rocketmq,python,某个队列不消费)