отказоустойчивость 4j Автоматический выключатель на основе времени ведет себя как счетчик на основе

#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 вызовов завершились неудачно.