不明确的断路 "fallback" 行为

Unclear circuitbreak "fallback" behavior

我想在失败时使用回退,所以 "open" 状态下的行为应该是调用回退而不是抛出异常。

问题是 回退在 "closed" 状态 期间被调用,而对于 "open" 状态我仍然得到异常。这是预期的行为吗?无法获得我正在寻找的东西?

我已经定义了我的自定义断路器:

resilience4j:
  circuitbreaker:
 configs:
  default:
    register-health-indicator: true
    slidingWindowSize: 10
    minimumNumberOfCalls: 2
    permittedNumberOfCallsInHalfOpenState: 2
    automaticTransitionFromOpenToHalfOpenEnabled: true
    waitDurationInOpenState: 20s
    failureRateThreshold: 20
    slowCallDurationThreshold: 2s
    slowCallRateThreshold: 20
instances:
  backendA:
    base-config: default

现在,我定义我的方法如下:

public class ExampleService {


@CircuitBreaker(name = "default", fallbackMethod = "fall")
public List<String> doSomething(Long id) {
    return Arrays.asList("a", "b", "c");

}

private List<String> fall(Long id, Exception ex) {
    return Arrays.asList("faaaallingggg");
}
 }

只需将回退方法的签名更改为

private List<String> fall(Long id, CallNotPermittedException ex) {
    return Arrays.asList("faaaallingggg");
}