最近在使用rocketmq 发送消息,出现了No route info of this topic 异常,但奇怪的是个人其它的服务均可以成功发送,惟有crs服务不能成功发送,在网上搜索的解决方式基本上都是:java
ocketmq运行时提示 No route info of this topic 异常产生的缘由多是this
①Broker禁止自动建立Topic,且用户没有经过手工方式建立Topicspa
②Broker没有正确链接到Name Server
③Producer没有正确链接到Name Server .net
这三种,个人貌似哪种都不是由于个人其它服务能够成功发送,因而手动调试代码,发现了一个隐藏的错误,个人服务却没有打印出来:调试
send request to <ip:9876> failednetty
java.lang.NoSuchMethodError: io.netty.channel.ChannelPromise.unvoid()Lio/netty/channel/ChannelPromise;server
这个是在producer 在 调用blog
updateTopicRouteInfoFromNameServer 的时候报的错。
原来rocketmq会使用netty做为底层的连接。那为何个人rocketmq会找不到方法呢?个人版本也是对的。难道是我引用了别的netty把rockentmq的给替换掉了吗?仔细检查了pom,果真如此
我真的引用了netty-all这个依赖,我怎么会引用这个依赖呢???决心去掉它尝试看看能不能发送成功,果真成功了。真的是它的缘由。。。因此,有时候问题不必定就是你想的那样,还得像大神说的那样多跟踪源码才能够呀。对了,我使用的rocketmq的版本是:4.3.2。另: RocketmqRemoting:95 info INFO: closeChannel: close the connection to remote address[39.107.153.215:9876] result: true 频繁打印这个,是由于jar包的问题RocketmqRemoting:95 info INFO: closeChannel: close the connection to remote address[] result: true 频繁打印这个是nameserver地址错误的问题。