Java 我使用Hystrix(1.5.18),并将param ErrorThresholdPercentage设置为30,即始终标记成功时的断路器状态开关

Java 我使用Hystrix(1.5.18),并将param ErrorThresholdPercentage设置为30,即始终标记成功时的断路器状态开关,java,hystrix,Java,Hystrix,我使用hystrix(1.5.18)设置ErrorThresholdPercentage等于30,当错误百分比超过阈值时,CirctureBreak打开 但是,当预先请求返回成功时,它将调用marksuccess方法来设置circuitBreakfalse 它就像一个循环来切换断路器状态 这是hystrix里的一只虫子吗 .withCircuitBreakerErrorThresholdPercentage(30) .withCircuitBreakerSleepWindowInMillisec

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

但是,当预先请求返回成功时,它将调用
marksuccess
方法来设置
circuitBreak
false

它就像一个循环来切换
断路器
状态

这是hystrix里的一只虫子吗

.withCircuitBreakerErrorThresholdPercentage(30)
.withCircuitBreakerSleepWindowInMilliseconds(2000) 

我预计消费者将在2000毫秒后尝试请求,但在一个提前请求返回成功后不久,可能您误解了属性的含义

如果电路断开,您的所有请求将在
sleepWindowInms
期间被拒绝。在
sleepWindowInMillimes
毫秒过后,它将变成
半开状态。在此状态下,只允许一个请求,如果成功,电路将再次关闭

我猜您看到了这样一种情况,即您的请求在
半开状态下成功,并关闭了电路

下面来自官方维基的图表可以帮助您理解。

谢谢你的回答,我知道原因了。web上的版本1.5.18有一些问题。方法marksuccess不是最新的,它没有检查半开状态。我将版本更改为1.5.12以解决问题。谢谢