如何在Spring Boot中实现自定义HealthIndicator

x33g5p2x  于2022-10-04 转载在 Spring  
字(1.9k)|赞(0)|评价(0)|浏览(416)

Spring Boot提供了以下开箱即用的HealthIndicator实现。它们在默认情况下是自动配置的。

  • CassandraHealthIndicator
  • DiskSpaceHealthIndicator
  • DataSourceHealthIndicator
  • ElasticsearchHealthIndicator
  • JmsHealthIndicator
  • MailHealthIndicator
  • MongoHealthIndicator
  • RabbitHealthIndicator
  • RedisHealthIndicator
  • SolrHealthIndicator
package com.example.samplewebapp;

import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.boot.json.JsonParser;
import org.springframework.boot.json.JsonParserFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;
import java.util.Date;
import java.util.Map;

@Component
public class RestHealthIndicator implements HealthIndicator {
  @Override
  public Health health() {
    RestTemplate restTemplate = new RestTemplate();
    String url = "https://jsonplaceholder.typicode.com/todos/1";
    try {
      String resp = restTemplate.getForObject(url, String.class);
      System.out.println("-------------->" + resp);
      JsonParser springParser = JsonParserFactory.getJsonParser();
      Map<String, Object> map = springParser.parseMap(resp);
      if ("delectus aut autem".equalsIgnoreCase((String) map.get("title"))) {
        return Health.up().build();
      } else {
        return Health.down()
            .withDetail("ping_url", url)
            .withDetail("ping_time", new Date())
            .build();
      }
    } catch (RestClientException e) {
      return Health.down(e).withDetail("ping_url", url).withDetail("ping_time", new Date()).build();
    }
  }
}

如果我们试图到达互联网URL https://jsonplaceholder.typicode.com/todos/1,会返回以下代码JSON。

{   "userId": 1,   "id": 1,   "title": "delectus aut autem",   "completed": false }

我们在我们的健康指标中实现了同样的逻辑,所以如果你试图到达"/actuator/health "URL,就会执行health()回调。这是一个简单的方法来检查你是否连接到互联网。

$ curl http://localhost:8080/actuator/health {"status":"UP"}

相关文章

微信公众号

最新文章

更多