的由来是在执行RocketMQ客户端的DefaultMQPushConsumer的start方法时,会时不时的报出invokeSync调用超时的异常,如下:引起的通过:java.lang.IllegalStateException:org.apache.rocketmq.remoting.exception.RemotingTimeoutException:在org.apache.rocketmq.client.impl.factory.MQClientInstance.updateTopicRouteInfoFromNameServer(MQClientInstance.java:679)~[rocketmq-客户端-4.7.1.jar]:4.7。org.apache.rocketmq.client.impl.factory.MQClientInstance.updateTopicRouteInfoFromNameServer(MQClientInstance.java:509)~[rocketmq-client-4.7.1.jar:4.7.1]在org.apache.rocketmq.client.impl.consumer.DefaultMQPushConsumerImpl.updateTopicSubscribeInfoWhenSubscriptionChanged(DefaultMQPushConsumerImpl.java:872)~[rocketmq-client-4.7.1.jar:4.7.1]在org.apache.rocketmq.client.impl.consumer.DefaultMQPushConsumerImpl:3javastart.6~[rocketmq-client-4.7.1.jar:4.7.1]在org.apache.rocketmq.client.consumer.DefaultMQPushConsumer.start(DefaultMQPushConsumer.java:698)~[rocketmq-client-4.7.1.jar:4.7.1]在cn.xdf.xcloud.rocketmq.support.DefaultRocketMQListenerContainer.start(DefaultRocketMQListenerContainer.java:276)~[xcloud-rocketmq-core-1.2.0.RELEASE.jar:1.2.0.RELEASE]atcn.xdf.xcloud.rocketmq.autoconfigure.ListenerContainerConfiguration.registerContainer(ListenerContainerConfiguration.java:103)~[xcloud-rocketmq-core-1.2.0.RELEASE.jar:1.2.0.RELEASE]...省略了12个常见帧由以下原因引起:org.apache.rocketmq.remoting.exception.RemotingTimeoutException:org.apache.rocketmq.remoting.netty.NettyRemotingClient的invokeSync调用超时.invokeSync(NettyRemotingClient.java:375)~[rocketmq-remoting-4.7.1.jar:4.7.1]在org.apache.rocketmq.client.impl.MQClientAPIImpl.getTopicRouteInfoFromNameServer(MQClientAPIImpl.java:1363)~[rocketmq-client-4.7.1.jar:4.7.1]在org.apache.rocketmq.client.impl.MQClientAPIImpl.getTopicRouteInfoFromNameS服务器(MQClientAPIImpl.java:1353)~[rocketmq-client-4.7.1.jar:4.7.1]在org.apache.rocketmq.client.impl.factory.MQClientInstance.updateTopicRouteInfoFromNameServer(MQClientInstance.java:622)~[rocketmq-client-4.7.1.jar:4.7.1]...省略18个常用框架急于马上找到解决方案的可以直接跳转到解决方案不过授人以鱼不如授人以渔不如教他钓鱼。还是推荐阅读寻找解决方案的过程。第一:可以为您提供以后类似问题的解决方案;第二:虽然报了这个异常,但是原因可能不一样。寻找解决之道作为面向搜索引擎编程的一员,我立马把关键字invokeSynccalltimeout复制到了搜索引擎。我得到的解决方案总结起来有两点:RocketMQ客户端和服务端的版本不一致,我检查了客户端。服务器的版本是4.7.1。降低RocketMQ客户端的版本对我来说是无法接受的。搜索引擎也解决不了,只能自己想办法了。首先找到报异常的地方:publicRemotingCommandinvokeSync(Stringaddr,finalRemotingCommandrequest,longtimeoutMillis)throwsInterruptedException,RemotingConnectException,RemotingSendRequestException,RemotingTimeoutException{longbeginStartTime=System.currentTimeMillis();finalChannelchannel=this.getAndCreateChannel(addr);if(channel!=null&&channel.isActive()){try{doBeforeRpcHooks(addr,request);longcostTime=System.currentTimeMillis()-beginStartTime;if(timeoutMillis
