RocketMQ报错 RemotingTooMuchRequestException: sendDefaultImpl call timeout

虚拟机使用RocketMQ报错 sendDefaultImpl call timeout

        • RocketMQ发生下面错误
        • 原因
        • 解决方法

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

你可能感兴趣的:(RocketMQ,RocketMQ,虚拟机,MQ,消息队列)