Откат ошибки первого запроса Hystrix

Что если requestVolumeThreshold не настроен явно? Это вызывает мой резервный метод немедленно, когда первый запрос сам по себе является ошибкой? Должен ли резервный метод вызываться 21-м запросом?(По умолчанию requestVolumeThreshold=20, errorThresholdPercentage=50%, metrics.rollingStats.timeInMilliseconds).

1 ответ

Решение

Вы должны различать условие для возврата и условие для разомкнутой цепи.

Резервный метод вашего автоматического выключателя будет вызван при следующем условии

  • разомкнутая цепь
  • отклонение семафора / пула потоков
  • сбой выполнения (любое исключение, выданное вашим методом, за исключением HystrixBadRequestException)
  • тайм-аут вашего метода (тайм-аут Hystrix)

Как вы можете видеть, разомкнутая цепь - это только одно условие для выполнения резервного метода.

Свойства, которые вы написали в вопросах, относятся к разомкнутой цепи, и они не имеют прямого отношения к определению аварийного выполнения.

В результате резервное выполнение для вашего первого запроса будет определяться исключением и тайм-аутом. Потому что в этот момент определенно цепь находится в закрытом состоянии, а ваш пул потоков (или семафор) пуст.

Другие вопросы по тегам