天天看点

JedisConnectionException Connection ResetJedisConnectionException Connection Reset

使用Jedis的subscribe进行消息订阅时有时会抛出<code>JedisConnectionException:Connection Reset</code>,查看redis-server控制台,发现有如下信息输出:

从字面意思来看是消息输出的缓冲区已经超出了限制,所以订阅的链接被关闭了。这通常是由于消息的生产者生产的消息的速度快于消费的速度,导致消息积压,从而超出了Redis的限制。这是redis的一种自我保护机制,遇到这种情况下它就会关闭对应的连接。解决方式就是调整对应的缓冲区大小。关于缓冲区的说明在redis的配置文件redis.conf中有说明。以下是摘自其配置文件的说明。

笔者遇到的是由于发布/订阅的消息超出了缓冲区的大小导致的,所以需要调整<code>client-output-buffer-limit pubsub 32mb 8mb 60</code>。适当的调大对应的缓冲区大小即可。