Spring HealthIndicator - 超时

时间:2015-09-02 16:27:51

标签: java spring spring-boot

我们在应用程序中使用Spring Boot Health Checks。在其中一个已检查的应用程序上,DB似乎无法及时回答。我们正在使用DataSourceHealthIndicator,这是在几秒钟之后回答一个例外,这很好,但需要不同的时间段才能回来。

我们可以在这个HealthIndicator上设置超时(并且很可能在其他人身上也是如此),以便HealthIndicator在最后说2s后报告错误,如果没有建立与DB的连接吗?

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

我知道,我们应该解决这些连接的问题,我们已经在研究这个问题了,但是像这样的健康检查也会很好。

1 个答案:

答案 0 :(得分:2)

您可以在application.properties

中禁用默认的db运行状况指示器
management.health.db.enabled=false

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

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

JdbcTemplate jdbcTemplate = new JdbcTemplate(datasource);
jdbcTemplate.setQueryTimeout(2);
jdbcTemplate.execute(...);

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