Spring HealthIndicator - 超时

tri*_*lem 5 java spring spring-boot

我们确实在我们的应用程序中使用了 Spring Boot Health Checks。在其中一个已检查的应用程序中,数据库似乎无法及时回答。我们正在使用 DataSourceHealthIndicator,这会在几秒钟后回答,但有一个例外,这很好,但需要不同的时间范围才能返回。

我们能否在这个 HealthIndicator 上设置一个超时(很可能也在其他人),以便 HealthIndicator 在最近的 2 秒后报告错误,如果无法建立到数据库的连接?

或者我们可以询问数据源是否还有可用的开放连接?

我知道,我们应该解决这些连接的问题,我们已经在处理这个问题,但是对于这样的事情进行 HealthCheck 也会很好。

mzc*_*mzc 7

您可以在 application.properties 中禁用默认的数据库健康指示器

management.health.db.enabled=false
Run Code Online (Sandbox Code Playgroud)

并实现HealthIndicator具有所需行为的自定义,如here所述。

在您的自定义HealthIndicator实现中,您可以使用一个不同的JdbcTemplate,它的期望超时值为 2 秒,如下所示:

JdbcTemplate jdbcTemplate = new JdbcTemplate(datasource);
jdbcTemplate.setQueryTimeout(2);
jdbcTemplate.execute(...);
Run Code Online (Sandbox Code Playgroud)

如果执行调用抛出异常,您的指标应返回Health.down(),否则Health.up()应返回。