我已经为hystrix命令配置了弹簧方面,它工作正常(打开和关闭电路)
在我的测试中,我观察到的是当电路打开时,仍会调用正常流程,并且在事件失败时,将调用后退。
我从文档中了解到,当电路打开时,正常流程将仅在五秒内检查一次(默认)。我尝试手动将值设置为20秒,但仍然无法正常工作
@HystrixCommand(commandProperties = {
@HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds", value = "20000")
},
fallbackMethod = "fallbackCall")
我在哪里设置此配置?我不希望每次调用错误服务,然后转到后备。
答案 0 :(得分:1)
我正在进行的测试配置不正确。 为了SHORT_CIRCUIT,应该满足circuitBreaker.requestVolumeThreshold。
在我的情况下,默认值为20,滚动窗口中的失败次数不超过20。所以短路从未发生过。下面是我通过流程响应从另一个堆栈获得的文档
within a timespan of duration metrics.rollingStats.timeInMilliseconds, the percentage of actions resulting in a handled exception exceeds errorThresholdPercentage, provided also that the number of actions through the circuit in the timespan is at least requestVolumeThreshold
我将circuitBreaker.requestVolumeThreshold设置为1,它按预期工作。