5

我目前有一个 Spring Boot 应用程序,我可以通过执行器访问运行状况检查。

这个应用程序依赖于另一个可用/启动的 Spring Boot 应用程序,所以我的问题是:

通过覆盖第一个应用程序中的健康检查,是否有一种优雅的方式可以对第二个应用程序进行健康检查?

本质上,我只想使用一个电话并为两个应用程序获取健康检查信息。

谢谢

4

2 回答 2

14

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();
    }
}
于 2016-06-06T13:16:39.653 回答
0

如果您在 App A 中有一个控制器,那么您可以在控制器中引入一个 GET 方法请求,并将其指向 App B 健康检查 API 端点。这样,您将在 App A 中使用 API 端点来检查 App B 的健康状况。

于 2016-06-06T10:09:24.620 回答