为 Spring Actuator 中的特定数据源禁用 HealthCheck

Disabling HealtCheck for specific DataSources in Spring Actuator

我在禁用 Spring Actuator 中的特定数据源时遇到问题。我目前在我的应用程序中有任务要实现 Spring Actuator,但需要 Actuator 到 ignore/disable 以实现应用程序中的某些功能(主要是健康指标)。应用程序是从其他迷你应用程序构建的。任何关于如何启动它的建议或说明?

禁用默认数据源健康指示器

management.health.db.enabled=false

并使用 DataSourceHealthIndicator

自定义所需的数据源

示例:

@Autowired
private DataSource requiredDataSource;

@Bean
public DataSourceHealthIndicator requiredDataSourceHealthIndicator() {
    return new DataSourceHealthIndicator(requiredDataSource);
}

防止Health检查系统因等待数据库连接无限循环而变得完全none-functional的一个重点是配置connectionTimeoutvalidationTimeout 在数据源配置中。

在我们使用 HikariCP 作为连接池提供者的情况下,相对于手头的情况,实现将如下所示,

    HikariConfig config = new HikariConfig();
    ...
    config.setInitializationFailTimeout(1000);
    config.setConnectionTimeout(1500);
    config.setValidationTimeout(1500);
        
    ...
        
    return new HikariDataSource(config).unwrap(DataSource.class)
@Bean
public DataSourceHealthIndicator dataSourceHealthIndicator(){
    ...
    return new DataSourceHealthIndicator(dataSource, "SELECT 1");
}
@Component
@RequiredArgsConstructor
public class CustomHealth implements HealthIndicator {

    @Override
    public Health health() {
        ...
        return Health.status(healthIndicator.health().getStatus()).build();
    }

    private final DataSourceHealthIndicator healthIndicator;
}

正如 Bhushan Uniyal 所述,您可以在 属性 文件

中禁用执行器默认 DataSourceHealthIndicator
YML

management:
  health:
    db:
      enabled: false
      
Properties

management.health.db.enabled: false