【问题标题】:Health check on Spring Boot webapp from another Spring Boot webapp从另一个 Spring Boot webapp 对 Spring Boot webapp 的运行状况检查
【发布时间】:2016-10-05 20:47:51
【问题描述】:
我目前有一个 Spring Boot 应用程序,我可以在其中通过执行器访问运行状况检查。
这个应用程序依赖于另一个可用/启动的 Spring Boot 应用程序,所以我的问题是:
通过覆盖第一个应用程序中的健康检查,是否有一种优雅的方式可以对第二个应用程序进行健康检查?
本质上,我只想使用一个调用并获取两个应用程序的运行状况检查信息。
谢谢
【问题讨论】:
标签:
rest
spring-boot
spring-boot-actuator
【解决方案1】:
您可以通过实现检查后端应用程序运行状况的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();
}
}
【解决方案2】:
如果你在 App A 中有一个控制器,那么你可以在控制器中引入一个 GET 方法请求,并将其指向 App B 健康检查 API 端点。这样,您将在 App A 中使用 API 端点来检查 App B 的健康状况。