#java #circuit-breaker #resilience4j
Вопрос:
Я пытаюсь протестировать автоматический выключатель на основе времени с такой конфигурацией :
failureRateThreshold : 50
slidingWindowSize : 2
slidingWindowType : TIME_BASED
minimumNumberOfCalls : 100
Я ожидал , что он запускает расчет частоты отказов, когда прошло 2 секунды, как slidingWindowSize=2
,
но он делает это, когда количество вызовов превышает 100 ( minimumNumberOfCalls
).
Даже если прошло 2 секунды без достижения 100 вызовов, он никогда не переходит в OPEN
состояние (даже если все вызовы завершились неудачно).
Это ошибка или ожидаемое поведение ?
Ответ №1:
ДА. Это ожидаемое поведение, как описано здесь в документах
Настраивает минимальное количество вызовов, которое требуется (за период скользящего окна), прежде чем прерыватель цепи сможет рассчитать частоту ошибок или медленную частоту вызовов. Например, если минимальное число вызовов равно 10, то необходимо записать не менее 10 вызовов, прежде чем можно будет рассчитать частоту отказов. Если было записано только 9 вызовов, прерыватель цепи не перейдет в режим открытия, даже если все 9 вызовов завершились неудачно.