消息队列 MQ产品使用合集之遇到"No topic route info in name server for the topic"错误,该如何处理

简介: 消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。

问题一:RocketMQ在生产环境中,会偶发(一两个月发生一次)rocketmq消息发送超时问题?

RocketMQ在生产环境中,会偶发(一两个月发生一次)rocketmq消息发送超时问题,客户端日志报sendDefaultImpl call timeout,此问题一直持续,直到重启客户端应用才能恢复正常。

问题分析线索:

(1)问题发生时发送超时的消息都是发往某一个特定的broker

(2)从网络抓包看,发生问题的时候,从发生问题的时间点开始,只有从客户端往这个特定的broker发送的数据包,broker没有数据包返回,直到客户端应用重启才恢复正常。

(3)从broker的监控看,发生问题的时间段里面,cpu的使用率会提高,但幅度不大,本来cpu idle稳定在98%,但是发生问题的时候,cpu idle跳到92%左右,客户端重启后cpu idle回到98%左右并保持稳定。

(4) broker的log里没有明显的报错信息

请问各位有没有碰到过类似的问题?有什么分析的思路,请不吝赐教。



参考答案:

建议

  1. 先明确客户端超时错误的的 response code和remark是什么
  2. 根据这个去排查broker的日志。 一般broker的cpu不会很高, 排查点可以放到磁盘读写, slave同步(如果有的话)



关于本问题的更多回答可点击进行查看:

https://developer.aliyun.com/ask/606319



问题二:RocketMQ是否使用这个API更加好点,避免无效的失败重试?

RocketMQ是否使用这个API更加好点,避免无效的失败重试?



参考答案:

这个数据来自刚刚那个定时任务



关于本问题的更多回答可点击进行查看:

https://developer.aliyun.com/ask/606300



问题三:RocketMQ本地安装mq报这个错为什么,我设置了自动创建?

RocketMQ本地安装mq报这个错为什么,我设置了自动创建?Caused by: org.apache.rocketmq.client.java.exception.NotFoundException: [request-id=92358021-2df5-4438-858e-8a5f2ee45f3b, response-code=40402] CODE: 17 DESC: No topic route info in name server for the topic: smsChannelTopic



参考答案:

在RocketMQ中,当您尝试发送或消费消息时,如果遇到"No topic route info in name server for the topic"错误,意味着RocketMQ NameServer中未能找到与您尝试发送或消费的Topic相关的路由信息。这个错误的原因通常有以下几点:

  1. Topic未在任何Broker上创建:
  • 即使您已经在RocketMQ配置中设置了允许自动创建Topic,但在某些情况下,Broker可能由于网络问题、配置不当或其他原因,没有成功创建Topic。
  • 您需要确保在至少一个Broker节点上手动创建该Topic(smsChannelTopic),或者检查Broker配置是否正确启用了自动创建Topic的功能。
  1. NameServer未连接或同步不完整:
  • 检查NameServer是否运行正常并且与Broker集群保持良好的网络连接和心跳同步。
  • 确保所有的Broker都已经成功注册到NameServer,并且它们的Topic路由信息已经被NameServer正确更新。
  1. 客户端配置问题:
  • 检查客户端应用程序是否指向了正确的NameServer地址。
  • 如果您刚启动了服务不久,可能需要等待一段时间,确保NameServer完成了与Broker的初始化同步。
  1. 环境隔离问题:
  • 如果在开发环境下允许自动创建Topic而在生产环境禁用,那么请确保在对应的环境中采取相应的配置措施。
  1. 服务重启或配置变更后未生效:
  • 如果最近有进行过重启、配置变更或扩容缩容操作,有可能是Broker和NameServer之间的信息同步还没有完成,等待一会儿再试或手动触发Broker与NameServer的同步。

为了彻底解决问题,请依次排查以上可能性,并根据实际情况采取相应措施。在排查完毕后,可以尝试重新发送消息或启动消费者,看是否仍存在问题。如果问题依旧,建议查看RocketMQ的日志文件,以获取更详细的错误信息和堆栈跟踪。



关于本问题的更多回答可点击进行查看:

https://developer.aliyun.com/ask/606297



问题四:RocketMQ中java实时读取Nacos里的配置,请问有什么解决办法吗?

RocketMQ中java实时读取Nacos里的配置,如果在切面里使用,会导致通知执行两次,原因是@Aspect和@RefreshScope 生成Bean方式不同。

请问有什么解决办法吗?我搜到的都是让去掉@RefreshScope 注解,但是我想保证Nacos配置实时读取?



参考答案:

这种建议自己管理bean, 不要托管给spring



关于本问题的更多回答可点击进行查看:

https://developer.aliyun.com/ask/606294



问题五:RocketMQ怎么解决 具体就是项目启动这个流程文件没有加载到数据库里 ?

RocketMQ怎么解决 具体就是项目启动这个流程文件没有加载到数据库里 然后执行时候就报了这个错误?

网上查找资料 都没有相关的解决方法



参考答案:

你的 processes 是 processe ss , 检查一下

你的 flowable 能正常访问到数据库吗?

你是用的 ExecutionListener 加载的 还是 用 CommandLineRunner 接口类 || ApplicationRunner 加载的?

@PostConstruct

public void processInit() {

RepositoryService repositoryService = processEngine.getRepositoryService();

DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
    deploymentBuilder.addClasspathResource("processes/vacationRequest.bpmn20.xml");
    // 可选设置部署名称和其它元数据
    deploymentBuilder.name("vacationRequest").category("Processes");
    Deployment deployment = deploymentBuilder.deploy();
}



关于本问题的更多回答可点击进行查看:

https://developer.aliyun.com/ask/606292

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
打赏
0
0
0
0
1159
分享
相关文章
开发者如何使用轻量消息队列MNS
【10月更文挑战第19天】开发者如何使用轻量消息队列MNS
471 15
云消息队列RabbitMQ实践解决方案评测
一文带你详细了解云消息队列RabbitMQ实践的解决方案优与劣
150 14
MQ 消息队列核心原理,12 条最全面总结!
本文总结了消息队列的12个核心原理,涵盖消息顺序性、ACK机制、持久化及高可用性等内容。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
RabbitMQ:交换机详解(Fanout交换机、Direct交换机、Topic交换机)
RabbitMQ:交换机详解(Fanout交换机、Direct交换机、Topic交换机)
447 7
RabbitMQ:交换机详解(Fanout交换机、Direct交换机、Topic交换机)
解决方案 | 云消息队列RabbitMQ实践
在实际业务中,网站因消息堆积和高流量脉冲导致系统故障。为解决这些问题,云消息队列 RabbitMQ 版提供高性能的消息处理和海量消息堆积能力,确保系统在流量高峰时仍能稳定运行。迁移前需进行技术能力和成本效益评估,包括功能、性能、限制值及费用等方面。迁移步骤包括元数据迁移、创建用户、网络打通和数据迁移。
129 4
聊聊 RocketMQ中 Topic,Queue,Consumer,Consumer Group的关系
本文详细解析了RocketMQ中Topic、Queue、Consumer及Consumer Group之间的关系。文中通过图表展示了Topic可包含多个Queue,Queue分布在不同Broker上;Consumer组内多个消费者共享消息;并深入探讨了集群消费与广播消费模式下Queue与Consumer的关系,以及Rebalancing机制在实例增减时如何确保负载均衡。理解这些关系有助于更好地掌握RocketMQ的工作原理,提升系统运维效率。
1307 2
云消息队列RabbitMQ实践解决方案评测报告
本报告旨在对《云消息队列RabbitMQ实践》解决方案进行综合评测。通过对该方案的原理理解、部署体验、设计验证以及实际应用价值等方面进行全面分析,为用户提供详尽的反馈与建议。
129 16
阿里云云消息队列RabbitMQ实践解决方案评测报告
阿里云云消息队列RabbitMQ实践解决方案评测报告
125 9

相关产品

  • 云消息队列 MQ