mq发送消息到两个服务器问题,RocketMQ消息发送常见错误与解决方案

本文详细介绍了在使用RocketMQ过程中遇到的"No route info of this topic"和"消息发送超时"问题,以及相应的排查和解决方法。针对"No route info of this topic",检查了Broker的自动创建主题设置和客户端连接的Nameserver地址。对于"消息发送超时",分析了Broker性能和网络状况,并提出了调整超时时间和重试策略的建议。
摘要由CSDN通过智能技术生成

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

一、No route info of this topic

没法找到路由信息,其完整的错误堆栈信息以下:缓存

74eb9a62bdf18d686da680d671304c1c.png

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

RocketMQ的路由寻找流程以下图所示:服务器

ef52f5ba02425e785a4cddccd66e798e.png

上面的核心关键点以下:

若是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}/binsh ./mqadmin topicRoute -n 127.0.0.1:9876 -t dw_test_0003

其输出结果以下所示:

0587f4eaa1efc7d2bbef8e5eb562da1d.png

若是经过命令没法查询到路由信息,则查看Broker是否开启了自动建立topic,参数为:autoCreateTopicEnable,该参数默认为true。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值