我正在尝试使用自定义Circuitbreaker构建Resilience4J CircuitbreakerConfig

使用以下代码构建CircuitbreakerConfig

CircuitBreakerConfig circuitBreakerConfig = CircuitBreakerConfig
    .custom()
    .slidingWindowSize(100)
    .failureRateThreshold(50)
    .slowCallRateThreshold(50)
    .slowCallDurationThreshold(
        Duration.ofMillis(1000))
    .waitDurationInOpenState(
        Duration.ofMillis(1000))
    .recordExceptions(IOException.class,
        FeignException.FeignServerException.ServiceUnavailable.class)
    .ignoreExceptions(
        FeignException.FeignServerException.InternalServerError.class)
    .build();
CircuitBreaker circuitBreaker = CircuitBreaker.of("sample-cb", circuitBreakerConfig);


我正在使用它进行HTTP调用。它始终需要1000毫秒以上的时间才能做出响应。理想情况下,如果前100个呼叫速度较慢,CircuitBreaker应该在50时转换为OPEN状态。但是只有在100次调用后,它才会转换为OPEN状态。

无法理解这种行为。寻求帮助。

最佳答案

删除failureRateThreshold作为测试,我的假设是它正在考虑failRateThreshold和slowCallRateThreshold之间的总和才能生效

07-24 14:42