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;
}
}
}
2条答案
按热度按时间h5qlskok1#
下面的代码将注册一个新的执行器端点
/healthy
,它使用与默认/health
端点相同的机制。如果您不想添加自定义的
/healthy
端点并继续使用默认的/health
端点,您可以在属性文件中添加以下设置,然后它将被Map到默认端点:7xllpg7q2#
假设你的公司建立了新的API标准,因为有许多不同的框架涉及到组成应用程序的范围,我们不仅仅是在谈论Sping Boot 应用程序(因为否则这会有点令人恼火):
只需在
/actuator/customstatus
下实现您自己的@Endpoint
,并在其下聚合所有HealthIndicator
的状态。您可能希望从Spring BootsHealthEndpoint
和CompositeHealthIndicator
类中获得如何做到这一点的灵感。(主题HealthAggregator
)