将 Spring Boot 致动器健康状态从UP/DOWN转换为TRUE/FALSE

yh2wf1be  于 2023-05-28  发布在  Spring
关注(0)|答案(2)|浏览(163)

是否有方法将状态字段值从UP/DOWN更改为

{"status":"UP"}

TRUE/FALSE如下:

{"status":true}

我想使用与Spring执行器使用的相同的检查逻辑,不需要自定义检查逻辑,只想更新状态值。

h5qlskok

h5qlskok1#

下面的代码将注册一个新的执行器端点/healthy,它使用与默认/health端点相同的机制。

package com.example;

import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.boot.actuate.health.HealthEndpoint;
import org.springframework.boot.actuate.health.Status;
import org.springframework.stereotype.Component;

@Component
@Endpoint(id = "healthy") // Change this to expose the endpoint under a different name
public class BooleanHealthEndpoint {

    HealthEndpoint healthEndpoint;

    public BooleanHealthEndpoint(HealthEndpoint healthEndpoint) {
        this.healthEndpoint = healthEndpoint;
    }

    @ReadOperation
    public Health getHealth() {
        Boolean healthy = healthEndpoint.health().getStatus().equals(Status.UP);
        return new Health(healthy);
    }

    public static class Health {
        private Boolean status;

        public Health(Boolean status) {
            this.status = status;
        }

        public Boolean getStatus() {
            return status;
        }
    }
}

如果您不想添加自定义的/healthy端点并继续使用默认的/health端点,您可以在属性文件中添加以下设置,然后它将被Map到默认端点:

management.endpoints.web.path-mapping.health=internal/health
management.endpoints.web.path-mapping.healthy=/health
7xllpg7q

7xllpg7q2#

假设你的公司建立了新的API标准,因为有许多不同的框架涉及到组成应用程序的范围,我们不仅仅是在谈论Sping Boot 应用程序(因为否则这会有点令人恼火):
只需在/actuator/customstatus下实现您自己的@Endpoint,并在其下聚合所有HealthIndicator的状态。您可能希望从Spring Boots HealthEndpointCompositeHealthIndicator类中获得如何做到这一点的灵感。(主题HealthAggregator

相关问题