Spring Boot Actuators 中是否有检查子服务健康状况的标准方法?

Is there a standard way in Spring Boot Actuators of checking the health of child services?

假设我有 Spring 引导服务 A,它依赖于(调用)Spring 引导服务 B。

A -> B

Spring Boot Actuators 可以告诉我 A 是否启动。

https:///A/health

我想知道 B 是否启动,通过调用 A。

https:///A/integratedhealth

我的问题是:Spring Boot Actuators 中是否有检查子服务健康状况的标准方法? (或者我只需要构建自定义执行器服务?)

Spring boot 提供了很多开箱即用的健康指标。但是,您可以通过实现 HealthIndicator 接口(ReactiveHealthIndicator 用于响应式应用程序)来添加自己的自定义健康指标:

@Component
public class ServiceBHealthIndicator implements HealthIndicator {
    
    private final String message_key = "Service B";

    @Override
    public Health health() {
        if (!isRunningServiceB()) {
            return Health.down().withDetail(message_key, "Not Available").build();
        }
        return Health.up().withDetail(message_key, "Available").build();
    }
    private Boolean isRunningServiceB() {
        Boolean isRunning = true;
        // Your logic here
        return isRunning;
    }
}

如果像之前一样将其与其他健康指标结合使用,您可以通过以下方式获得健康端点响应:

{
   "status":"DOWN",
   "details":{
      "serviceB":{
         "status":"UP",
         "details":{
            "Service B":"Available"
         }
      },
      "serviceC":{
         "status":"DOWN",
         "details":{
            "Service C":"Not Available"
         }
      }
   }
}

您可以在 spring 引导文档中找到有关 custom health checks and endpoints 的更多信息。