HikariCp插件,如何知道数据库的链接是否正常?

我独立使用了activeRecord插件,我在使用过程中,想知道当前数据库链接是否正常,怎么样才能知道。

就相当于,我想知道 hikaricp 定时 通过 select 1 来检测数据库链接是否正常。我如何才能知道这个检测结果?

评论区

tom

2020-10-14 00:28

我期望知道两个事情,开始时,通过什么 api 来查询数据库是否能连通?在系统运行过程中数据库断开时,我怎么样才能知道?

JFinal

2020-10-14 01:26

@tom 不同的数据库连接池有不同的检测方式,例如 druid 就有一个 validationQuery 配置,这个可以对 DruidPlugin 进行配置:setSalidationQuery(String)

hikaricp 没有用过,它应该也有这种机制,你可以找找他的文档看一下, druid 的相关配置也做个参考:
https://www.jianshu.com/p/c9845884d735

另外一个简单的办法是像网络框架那样使用类似心跳检测的机制,定时发送请求检测连接是否可用

可以单独用一个线程,定时检测,mysql 下可以使用 Db.query("SELECT 1"),将之放在 try catch 中,出现异常则表明无法连通:
try {
Db.query("SELECT 1");
return "正常";
}
catch(Exception e) {
return "无法连接";
}

tom

2020-10-14 09:00

谢谢波总,辛苦了,这么晚还给我回复。我已经配置验证心跳的语句,其默认就有。其实无论是Druid还是hikariCP都有自己的心跳检测。我想直接获取druid或hikaricp的检测结果就好。否则相当于这些组件已经有了一套,自己再写一套。不是不行,只是感觉有点bad smell。

热门反馈

扫码入社