为 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的一个重点是配置connectionTimeout
和 validationTimeout
在数据源配置中。
在我们使用 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
我在禁用 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的一个重点是配置connectionTimeout
和 validationTimeout
在数据源配置中。
在我们使用 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 所述,您可以在 属性 文件
中禁用执行器默认 DataSourceHealthIndicatorYML
management:
health:
db:
enabled: false
Properties
management.health.db.enabled: false