我正在为我的 Spring Boot 应用程序实现自定义执行器 HealthIndicators。
它们看起来像:
public class MyClass implements HealthIndicator {
@Override
public Health health() {
LOGGER.info("Checking Service Health...");
try {
String url = this.getExternalServiceUrl().concat("/heartbeat");
JSONObject response = this.getResponse(url, null);
Boolean responseSuccess = response.getBoolean("success");
Boolean serviceAvailable = ...
if (responseSuccess && serviceAvailable) {
return Health.up().withDetail(...).build();
} else {
return Health.down().withDetail(...).build();
}
} catch (Exception e) {
return Health.down().withDetail(...).build();
}
}
}
本质上,我的应用程序依赖于其他外部网络服务,当我调用我的心跳页面时,我希望它能够 ping 这些服务的心跳,并相应地更改我的应用程序的 UP 或 DOWN 状态。
我的问题是,默认情况下 Actuator 似乎有 5 分钟左右的预定时间,在该时间内它将自动调用
/actuator/health
端点。我想禁用此功能。
我只想在代码中显式调用健康端点时调用它。
有人知道如何禁用执行器默认调度吗?
我正在使用
spring-boot-actuator:2.1.3.RELEASE
Spring Boot 永远不会自动调用自己的健康端点。如果每 5 分钟调用一次,则表明您部署应用程序的环境中正在执行此操作。
我们也面临类似的问题,然后发现有内部公司库正在特定时间间隔调用健康端点。