我目前拥有一个Spring Boot应用程序,可以通过执行器访问健康检查。
这个应用程序依赖于另一个Spring Boot应用程序的可用性/上线,所以我的问题是:
通过覆盖第一个应用程序中的健康检查,是否有一种优雅的方式来对第二个应用程序进行健康检查?
本质上,我只想使用一个调用来获取两个应用程序的健康检查信息。
我目前拥有一个Spring Boot应用程序,可以通过执行器访问健康检查。
这个应用程序依赖于另一个Spring Boot应用程序的可用性/上线,所以我的问题是:
通过覆盖第一个应用程序中的健康检查,是否有一种优雅的方式来对第二个应用程序进行健康检查?
本质上,我只想使用一个调用来获取两个应用程序的健康检查信息。
通过实现 HealthIndicator
检查后端应用的健康状况,您可以开发自己的健康指标。因此,本质上这不会太困难,因为您可以直接使用开箱即用的 RestTemplate。
public class DownstreamHealthIndicator implements HealthIndicator {
private RestTemplate restTemplate;
private String downStreamUrl;
@Autowired
public DownstreamHealthIndicator(RestTemplate restTemplate, String downStreamUrl) {
this.restTemplate = restTemplate;
this.downStreamUrl = downStreamUrl;
}
@Override
public Health health() {
try {
JsonNode resp = restTemplate.getForObject(downStreamUrl + "/health", JsonNode.class);
if (resp.get("status").asText().equalsIgnoreCase("UP")) {
return Health.up().build();
}
} catch (Exception ex) {
return Health.down(ex).build();
}
return Health.down().build();
}
}