2

我想在失败的情况下使用回退,因此“打开”状态下的行为应该是调用回退而不是抛出异常。

问题是在“关闭”状态期间调用了回退,而对于“打开”状态我仍然得到异常。这是预期的行为吗?没有办法达到我正在寻找的东西?

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

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");
}
 }
4

1 回答 1

3

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

private List<String> fall(Long id, CallNotPermittedException ex) {
    return Arrays.asList("faaaallingggg");
}
于 2020-03-13T12:02:32.737 回答