redis監聽斷開後,重新監聽的方案

2021-10-03 19:18:30 字數 1385 閱讀 5855

之前搭建的springcloud gateway框架,出現了問題,一旦redis重啟後監聽就會失效。我的思路是,捕捉到redis斷開的異常,並嘗試重新監聽。寫了乙個心跳機制,一旦redis斷開連線,便等待redis重連,一旦重連後就重新開啟監聽,呼叫keyspaceeventmessagelistener的init方法,下面是**。

@slf4j

@component

public class redismessagelistener extends keyspaceeventmessagelistener ")

private string redishost;

@value("$")

private int redisport;

@value("$")

private string redispassword;

public redismessagelistener(redismessagelistenercontainer listenercontainer)

@override

public void onmessage(message message, byte pattern) );

this.publisher.publishevent(new refreshroutesevent(this));

log.info("路由重置成功");}}

catch (exception ex)

}/*每隔10s定時心跳獲取長連線*/

@scheduled(cron = "0/10 * * * * *")

public void timer() throws interruptedexception

//若重新連線成功後,重新開啟redis監聽

super.init();}}

/*** 檢查redis是否存活

* @param url

* @param port

* @param password

* @return

*/public boolean checkredisisok(string url, int port, string password)

string ping = jedis.ping();

if (ping.equalsignorecase("pong"))

} catch (exception e)

return result;

}@override

protected void dohandlemessage(message message)

}

採用定時器保持心跳,用jedis的ping方法判斷連線是否異常。@schedule在上乙個任務未結束前不會執行新的任務,不用擔心任務會積壓。

android 網路斷開的監聽

標籤 分類 android 其實手機在網路方面的的監聽也比較重要,有時候我們必須實時監控這個程式的實時網路狀態,android在網路斷開與連線的時候都會發出廣播,我們通過接收系統的廣播就可以實現網路的監聽,下面是 oncreate的時候例項化 private netstate receiver ne...

如何監聽網路斷開的事件

問題情景 pc連線server,可能是訊息伺服器或者資料庫伺服器等。你需要在pc網路一斷開的情況,就通知到使用者,以及做一些資源清理的工作。怎麼做?解決方案 net提供了乙個事件,在網路狀態變化的時候就會觸發該事件,然後在事件處理函式裡面測試與server的聯通性 考慮到雙網絡卡或者無線網所以不能簡...

Redis 事件監聽

需求 要統計乙個頁面的訪問人數,如果訪問量大時,頻繁讀寫資料庫,而且操作的是同乙個資料,可能會對效能造成影響。解決 把資料放在快取中,定期和資料庫同步,設定容器關閉 關閉容器前,將資料同步到資料庫。現在系統中快取用的是redis。redis一般的應用是提供查詢效率,很少更新,更新也是直接更新資料庫,...