我们在应用程序中使用Spring Boot Health Checks。在其中一个已检查的应用程序上,DB似乎无法及时回答。我们正在使用DataSourceHealthIndicator,这是在几秒钟之后回答一个例外,这很好,但需要不同的时间段才能回来。
我们可以在这个HealthIndicator上设置超时(并且很可能在其他人身上也是如此),以便HealthIndicator在最后说2s后报告错误,如果没有建立与DB的连接吗?
或者,我们是否可以询问数据源是否还有可用的开放连接?
我知道,我们应该解决这些连接的问题,我们已经在研究这个问题了,但是像这样的健康检查也会很好。
答案 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()
。