RocketMQ报错:rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout

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

RocketMQ报错:rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout

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

RocketMQ报错:rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout

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

RocketMQ报错:rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout

报错分析及解决方法:

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

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

RocketMQ报错:rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout

然后网上找callTimeout为啥是true。

RocketMQ报错:rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout

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