不明确的断路 "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");
}
我想在失败时使用回退,所以 "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");
}