6

我已将以下依赖项添加到我的 Spring Boot 项目中

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

当断路器打开时,我在执行器/健康端点上收到以下响应,状态代码为 503 服务不可用:

{
"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解决此问题的属性,但这会从执行器中删除断路器统计信息,我仍然希望看到。

4

2 回答 2

1

我能想到两种可能。

HealthIndicator1)根据resilience4j的代码 创建自定义: https ://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 的健康指标并从metrics actuator 端点获取相同的信息。

于 2019-04-27T22:03:14.040 回答
1

1.2.0开始,您可以为此设置allowHealthIndicatorToFailfalse

于 2020-08-11T15:10:56.887 回答