Пользовательские условия ошибки для запуска отката в Hystrix

Исходя из понимания, резервная логика Hystrix запускается при возникновении определенных условий, таких как время ожидания запроса, пул потоков, работающий с емкостью 100%, или исключение при возникновении зависимости. Помимо этих 3 факторов, можно ли добавить дополнительные условия, которые также рассматриваются как сбои, например, какой-либо конкретный код ошибки HTTP, например 413 (слишком большая полезная нагрузка)?

1 ответ

Резервный метод Hystrix будет вызван при следующем условии

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

Только часть, которая непосредственно связана с кодом пользователя, является ошибкой выполнения.

В этом случае откат будет вызван любым исключением run() метод. То же самое для чистой Hystrix через HystrixCommand и Hystrix Javanica через аннотацию.

Только одно исключение, которое не вызывает HystrixBadRequestException

Поэтому, если вы хотите активировать свой запасной вариант и для кода состояния HTTP 413, все, что вам нужно, это просто выбросить любое исключение внутри вашего метода.

Если вы используете какую-либо библиотеку со встроенной поддержкой Hystrix, например Spring Cloud Feign, вам нужно реализовать что-то, что требуется этой библиотеке. В случае Spring Cloud Feign вы можете реализовать свой собственный ErrorDecoder, Декодер ошибок по умолчанию вызовет откат для всех ошибок 4XX,5XX. Если вы не хотите вызывать какие-либо ошибки 4XX, кроме 413, вы можете бросить HystrixBadRequestException внутри него.

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