学习rocketmq发送同步消息的时候,报了一个这样的错:rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout

以上测试代码启动后报错如下图。

不想看原因的直接看解决方案:设置生产者发送消息的超时时间长一点。

报错分析及解决方法:

看了网上说法很多:有说是因为ip不是外网ip,还有一些其他的。说ip不是公网ip的我就纳闷了。学习的时候,看资料人家用的就是虚拟机,局域网ip呀,不也成功了嘛。然后我就拿到报错的关键信息:sendDefaultImpl call timeout ,看是哪里打印了这个,为什么打印这个!

从producer.send点下去,最后在下面这张图的类中发现了这个信息。

然后网上找callTimeout为啥是true。

原来是因为默认的timeout是3000,太小了,调大一点就好了。

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐