【问题标题】: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 的健康状况。

    【讨论】:

      猜你喜欢
      • 2016-01-27
      • 2018-02-21
      • 1970-01-01
      • 2015-06-24
      • 2020-04-06
      • 2018-11-07
      • 1970-01-01
      • 2014-08-18
      • 2019-09-09
      相关资源
      最近更新 更多