Resilience4j和Spring Actuator - 开路杀戮服务

问题描述 投票:3回答:3

我在Spring Boot项目中添加了以下依赖项

implementation 'io.github.resilience4j:resilience4j-spring-boot2:0.14.1'

当断路器打开时,我的执行器/健康终端得到以下响应,状态码为503 Service Unavailable:

{
"status": "DOWN",
"details": {
    "diskSpace": {
        "status": "UP",
        "details": {
            "total": 499963174912,
            "free": 432263229440,
            "threshold": 10485760
        }
    },
    "refreshScope": {
        "status": "UP"
    },
    "getFlightInfoCircuitBreaker": {
        "status": "DOWN",
        "details": {
            "failureRate": "100.0%",
            "failureRateThreshold": "2.0%",
            "maxBufferedCalls": 1,
            "bufferedCalls": 1,
            "failedCalls": 1,
            "notPermittedCalls": 1,
            "state": "OPEN"
        }
    }
}

}

我的AWS ECS容器运行状况检查使用此端点来确定其运行状况,并在非200响应上重新启动容器。

因为我不想在断路器打开时重新启动我的服务,是否有办法让断路器打开,而不会导致服务状态下降?

我知道registerHealthIndicator: false属性来解决这个问题,但是这会从执行器中删除断路器统计数据,我仍然希望看到它。

spring-boot-actuator resilience4j
3个回答
0
投票

我可以想到两种可能性。

1)根据resilience4j的代码创建一个自定义HealthIndicatorhttps://github.com/resilience4j/resilience4j/blob/master/resilience4j-spring-boot2/src/main/java/io/github/resilience4j/circuitbreaker/monitoring/health/CircuitBreakerHealthIndicator.java

您需要返回Health.up()Health.unknown()以避免/health端点的503。

2)禁用resilience4j的运行状况指示器,并从指标执行器端点获取相同的信息。


0
投票

不,你只需要正确配置Spring Boot2。

management.health.status.http-mapping.DOWN=200


0
投票

您只需按如下方式配置Spring Boot2:

management.health.status.http-mapping.DOWN=200

© www.soinside.com 2019 - 2024. All rights reserved.