当jedis连接异常导致不能订阅时,我们可以把获得连接和订阅代码放到 while 循环里,这样异常时会重新获取连接进行订阅,希望对大家有用。
Thread asyncSubscribeThread = new Thread(new Runnable() {
public void run() {
while (true) {
Jedis jedis = null;
boolean borrowOrOprSuccess = true;
try {
jedis = getResource(_redisName);
jedis.subscribe(_jedisPubSub, _channels);
}
catch (Exception e) {
borrowOrOprSuccess = false;
logger.error(e.getMessage(), e);
}
finally {
returnResource(borrowOrOprSuccess, _redisName, jedis);
}
}
}
});