我使用hystrix(1.5.18)设置ErrorThresholdPercentage
等于30,当错误百分比超过阈值时,CircuitBreak
打开。
但是,当提前请求返回成功时,它会调用 marksuccess
方法来设置 CircuitBreak
false。
就像一个循环来切换CircuitBreak
状态。
这是 hystrix 中的错误吗?
.withCircuitBreakerErrorThresholdPercentage(30)
.withCircuitBreakerSleepWindowInMilliseconds(2000)
我预计消费者会在 2000 毫秒后尝试请求,但不会在前一个请求返回成功后立即尝试
最佳答案
您可能误解了 CircuitBreaker.sleepWindowInMilliseconds 属性的含义。
如果电路打开,在 sleepWindowInMilliseconds
期间,您的所有请求都将被拒绝。经过sleepWindowInMilliseconds
毫秒后,会变成half-open
状态。在这种状态下,只允许一个请求,如果成功,电路将再次关闭。
我猜您在半开
状态下看到了请求成功并关闭电路的情况。
关于java - 我使用 Hystrix(1.5.18) ,并设置参数 ErrorThresholdPercentage=30,始终在标记成功时切换断路状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57817549/