虚拟机使用RocketMQ报错 sendDefaultImpl call timeout
RocketMQ发生下面错误
在虚拟机下安装RocketMQ,并且在客户端的 Producer 发送消息对的时候发生如下异常错误信息:
Exception in thread "main" org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendDefaultImpl(DefaultMQProducerImpl.java:640)
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1310)
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1256)
at org.apache.rocketmq.client.producer.DefaultMQProducer.send(DefaultMQProducer.java:339)
at com.lyh.demo.web.RocketMqProducer.main(RocketMqProducer.java:31)
14:09:23.391 [NettyClientSelector_1] INFO RocketmqRemoting - closeChannel: close the connection to remote address[] result: true
原因
因为使用的是虚拟机,设置内存也只有1G,所以从 Windows 上开发连接 虚拟机中的 nameServer 时要经过 Linux 系统的防火墙,而防火墙一般都会有超时的机制,在网络连接长时间不传输数据时,会关闭这个 TCP 的会话,关闭后再读写,就有可能导致这个异常。
解决方法
因为现在主要是熟练 RocketMQ 的 API,所以直接关闭 Linux 的防火墙
# 关闭防火墙
[root@localhost ~]# systemctl stop firewalld
# 查看防火墙状态
[root@localhost ~]# systemctl status firewalld
来源:https://blog.csdn.net/qq_27686779/article/details/100827703