背景:公司项目用的阿里云redis实例,最近遇到了好几次由于网络抖动,导致redis订阅消息断连,业务产生影响,由于发布订阅没有重试机制,这里需要考虑断线重连
大致思路就是异步订阅,循环重试,以下是相关代码
public void run() {
JedisPool pool = new JedisPool(jedisPoolConfig, host, port, timeout, password);
Jedis jedis = pool.getResource();
while (true) {
try {
String key = "__keyevent@" + datebase + "__:expired";
jedis.subscribe(myJedisPubSub, key);
} catch (JedisConnectionException e) {
try {
jedis.close();
jedis = pool.getResource();
} catch (Exception e2) {
try {
Thread.sleep(5000);
} catch (InterruptedException ex) {
log.error("psubscribe expired event error: Inter