Как повторить попытку с hystrix

У меня есть команда hystrix, которая инкапсулирует вызов REST. В случае сбоя (например, тайм-аут) я хочу сделать одну повторную попытку и в случае сбоя вернуть соответствующую ошибку.

Как я вижу, Hystrix не поддерживает повторные попытки. Единственный способ сделать это с помощью Hystrix — поместить основную логику в метод getFallback(). Но это не выглядит правильным.

Итак, как правильно реализовать тайм-аут с помощью hystrix?


person evgeniy44    schedule 20.10.2017    source источник


Ответы (2)


Сам Hystrix не заботится о том, какие команды он оборачивает, и он не поддерживает идею повторных попыток. Пример, лежащий в основе идеи: если ваша команда (которая оборачивает запрос REST) ​​параметризована, может случиться так, что некоторые конечные точки ресурсов следует повторить, а другие нет. Было бы неудобно иметь две команды, которые делают более или менее одно и то же, или технический параметр для активации повторной попытки. Кроме того, это добавит дополнительную сложность проекту.

Чтобы обойти эту проблему и придерживаться Hystrix, вы можете заглянуть в SpringRetry, если вы работаете над приложением Spring.

Другим возможным решением является resilience4j, которое в этом контексте можно рассматривать как комбинацию Hystrix и SpringRetry.

person meistermeier    schedule 20.10.2017

Если вы используете feign для вызовов API, он поддерживает повторные попытки. Вы можете выполнить другую логику только в резервном методе и оставить логику повторных попыток для имитации.

Вы можете перейти по этой ссылке: https://medium.com/swlh/how-to-customize-feigns-retry-mechanism-b472202be331

person formerly1    schedule 28.06.2021
comment
пожалуйста, включите всю информацию, относящуюся к вашему ответу, в ваше сообщение. внешние ссылки должны предоставлять только дополнительную информацию. прямо сейчас, если ссылка по какой-то причине прервется, ваш ответ станет совершенно бесполезным. я рекомендую пройти экскурсию, а также прочитать как написать хороший ответ - person Franz Gleichmann; 29.06.2021