之前搭建的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一般的應用是提供查詢效率,很少更新,更新也是直接更新資料庫,...