问题描述:
producer插入MQ的时候出现,客户端插入消息失败,提示服务器无命令应答返回的情况,让用户检查broker的有效性。
详细的错误信息就不列了。
MQ服务器端日志输出[INFO]Transport failed: java.io.EOFException | org.apache.activemq.broker.TransportConnection.Transport
问题原因:
MQ配置文件里配置了ProducerFlowControl='true',而且memorylimit过小导致的。
这个策略生效的方式是在它的策略里配置
<pendingQueuePolicy>
<vmQueueCursor />
</pendingQueuePolicy>
才会生效。所以如果为了防止内存使用过大,可以配置相应的属性。但是,一定要设置好内存限制,否则就会出现上面的错误。
解决方式:
1、配置合理的限制。
2、另外就是去掉这个配置项。
注,当队列中数据过大的时候,虽然没有配置这个限制,也一样会出现相同的问题,所以最好不要盲目的堆积消息。