Java:RocketMQ消息发送报错:MQClientException: No route info of this topic: topic_xxx
目录
- 场景
- 异常信息
- 排查
- 原因
- 解决
- 补充
- 同样问题不同的情况
场景
生产者发送消息出现报错无法定位到主题:fsc_wb_ccs_ms_wechat_s
异常信息
See http://rocketmq.apache.org/docs/faq/ for further details.
org.apache.rocketmq.client.exception.MQClientException: No route info of this topic: fsc_wb_ccs_ms_wechat_s
See http://rocketmq.apache.org/docs/faq/ for further details.at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendDefaultImpl(DefaultMQProducerImpl.java:735)at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1426)at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1369)at org.apache.rocketmq.client.producer.DefaultMQProducer.send(DefaultMQProducer.java:351)at com.xxx.rocketmq.producer.RocketMQProducer.sendMessage(RocketMQProducer.java:158)at com.xxx.rocketmq.util.RocketMQProducerUtil.sendAppMessage(RocketMQProducerUtil.java:266)at com.xxx.scheduler.task.CCSStatusSendTask.sendToAgs(CCSStatusSendTask.java:73)at com.xxx.scheduler.task.CCSStatusSendTask.execute(CCSStatusSendTask.java:44)at sun.reflect.GeneratedMethodAccessor185.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:798)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762)at net.javacrumbs.shedlock.core.DefaultLockingTaskExecutor.executeWithLock(DefaultLockingTaskExecutor.java:74)at net.javacrumbs.shedlock.spring.aop.MethodProxyScheduledLockAdvisor$LockingInterceptor.invoke(MethodProxyScheduledLockAdvisor.java:86)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762)at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:707)at com.xxx.scheduler.task.CCSStatusSendTask$$EnhancerBySpringCGLIB$$c81e42e6.execute(<generated>)at com.xxx.scheduler.config.ConfigurerScheduling.executeToDo(ConfigurerScheduling.java:41)at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:95)at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)at java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:750)
排查
1、查看RocketMQ管理端,确认该主题确实存在,但状态有问题

2、经过百度也没有找到真正的原因
3、删除该主题后重新启动服务生产者在该主题发送消息,该主题被重新创建,问题解决
原因
未知
解决
1、删除主题
2、重新启动服务生产者在该主题发送消息,该主题被重新创建,消息发送正常(本环境的MQ是配置了允许自动创建主题的)
补充
同样问题不同的情况
另外一个Java程序也出现同样的问题,但这次删除主题后生产者在该主题发送消息,该主题并没有自动创建
最终解决
1、删除主题
2、服务重启,生产者在该主题发送消息后主题没有自动创建
3、重启mq
4、再次重启服务,生产者在该主题发送消息后主题自动创建
