Spring健康指标 - 超时问题

6
我们在应用程序中使用Spring Boot健康检查。在其中一个被检查的应用程序上,看起来数据库无法及时响应。我们正在使用DataSourceHealthIndicator,这个指标会在几秒钟后回答一个异常,这是可以接受的,但需要不同的时间才能返回。 我们是否可以在此HealthIndicator(以及其他大部分)上设置超时,以便如果无法建立与DB的连接,则HealthIndicator最晚在2秒后报告错误? 或者我们是否可以询问Datasource是否仍有任何打开的连接? 我知道,我们应该解决这些连接的问题,我们已经在处理这个问题,但像这样的HealthCheck也很好。
1个回答

8

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

management.health.db.enabled=false

并实现自定义 HealthIndicator,其行为与此处描述的相同:here

在您的自定义 HealthIndicator 实现中,您可以使用不同的 JdbcTemplate,其超时值为 2 秒,类似于以下内容:

JdbcTemplate jdbcTemplate = new JdbcTemplate(datasource);
jdbcTemplate.setQueryTimeout(2);
jdbcTemplate.execute(...);
如果执行调用抛出异常,您的指标应该返回Health.down(),否则应该返回Health.up()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,