Spring Boot提供了以下开箱即用的HealthIndicator实现。它们在默认情况下是自动配置的。
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"}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
内容来源于网络,如有侵权,请联系作者删除!