我们在应用程序中确实使用了Spring Boot运行状况检查。在一个已检查的应用程序上,数据库似乎无法及时回答。我们正在使用DataSourceHealthIndicator,这是在几秒钟后回答,但可以,但是需要不同的时间范围才能返回。
我们是否可以在此HealthIndicator上设置一个超时时间(并且很可能也对其他HealthIndicator设置超时),以便HealthIndicator至少在2秒后报告错误(如果无法建立与数据库的连接)?
还是我们可以问数据源,是否仍然有可用的开放连接?
我知道,我们应该使用这些连接来解决问题,并且我们已经在努力解决这一问题,但是类似这样的HealthCheck也将是不错的选择。
最佳答案
您可以在application.properties中禁用默认的数据库运行状况指示器
management.health.db.enabled=false
并实现具有所需行为的自定义
HealthIndicator
,如here所述。在您的自定义
HealthIndicator
实现中,您可以使用其他JdbcTemplate
,其期望的超时值为2秒,如下所示:JdbcTemplate jdbcTemplate = new JdbcTemplate(datasource);
jdbcTemplate.setQueryTimeout(2);
jdbcTemplate.execute(...);
如果execute调用引发异常,则您的指标应返回
Health.down()
,否则应返回Health.up()
。关于java - Spring 健康指标-超时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32358362/