我用的是Hystrix(1.5.18),设置参数ErrorThresholdPercentage=30,marksuccess时的断路状态切换总是

I use Hystrix(1.5.18) ,and set param ErrorThresholdPercentage=30,the circuitbreak status switch when marksuccess always

我用hystrix(1.5.18)设置ErrorThresholdPercentage等于30,当错误百分比超过阈值时,circuitBreak打开。

但是,当提前请求return成功时,它会调用marksuccess方法来设置circuitBreak false。

circuitBreak状态的切换就像循环一样。

这是 hystrix 中的错误吗?

.withCircuitBreakerErrorThresholdPercentage(30)
.withCircuitBreakerSleepWindowInMilliseconds(2000) 

我预计消费者会在 2000 毫秒后尝试请求,但不会在一个提前请求 return 成功后不久

可能你误解了属性circuitBreaker.sleepWindowInMilliseconds的意思。

如果电路打开,您的所有请求都将在 sleepWindowInMilliseconds 期间被拒绝 sleepWindowInMilliseconds 毫秒后,将变为 half-open 状态。在这种状态下,只允许一个请求,如果成功,电路将再次关闭。

我猜你看到的情况是你的请求在half-open状态下成功并且关闭了电路。

官方wiki中的下图可以帮助您理解。