如何在SpringBoot应用程序中使用hikari配置自动重连?

use*_*980 6 spring-boot hikaricp

我们使用的是 SpringBoot 2.1.x 版本,因此 Hikari 是默认的 DataSource 实现。但是,我不确定如何配置 Hikari 设置以在数据库维护/重新启动或网络连接问题后自动重新连接到我们的 Oracle 数据库。

我们有以下 hikari 设置,但似乎没有帮助。

account.datasource.url: jdbc:oracle:thin:@myserver:1521:DEV
account.datasource.username: user
account.datasource.password: xxxx
account.datasource.driverClassName: oracle.jdbc.driver.OracleDriver

account.datasource.hikari.connection-timeout: 30000
account.datasource.hikari.maximum-pool-size: 3
account.datasource.hikari.idle-timeout: 60000
account.datasource.hikari.max-lifetime: 1800000
account.datasource.hikari.minimum-idle: 2
Run Code Online (Sandbox Code Playgroud)

与数据库的网络连接恢复后,无法重新连接。

获取JDBC连接失败;嵌套异常是 java.sql.SQLTransientConnectionException:HikariPool-1 - 连接不可用,请求在 30033 毫秒后超时。

任何其他 account.datasource.hikari.xxxxx 将有助于自动重新连接到数据库?

Cat*_*hwa 4

来自 HikariCP文档

连接测试查询

如果您的驱动程序支持 JDBC4,我们强烈建议不要设置此属性。这适用于不支持 JDBC4 Connection.isValid() API 的“旧版”驱动程序。这是在从池中向您提供连接之前执行的查询,以验证与数据库的连接是否仍然有效。再次尝试在没有此属性的情况下运行池,如果您的驱动程序不兼容 JDBC4,HikariCP 将记录一条错误来通知您。默认值:无

因此,我建议验证您的 JDBC 驱动程序实际上是否兼容 JDBC4。如果不是 - 设置上述属性。