Требует ли повторная попытка Feign какой-либо конфигурации?

Я только что попытался сделать попытку плавного обновления службы в тестовой настройке. К службе обращается клиент Feign. И наивно у меня сложилось впечатление, что при наличии нескольких доступных экземпляров службы клиент повторит попытку другого экземпляра, если ему не удастся подключиться к одному из них.

Однако этого не произошло. Но я не могу найти упоминания о том, как Feign in Spring Cloud должен быть настроен для этого? Хотя я видел упоминания о том, что он поддерживает его (в отличие от использования RestTemplate, где вы использовали бы что-то вроде Spring Retry?)


person Kristoffer    schedule 20.03.2015    source источник
comment
feign сам по себе не делает повторных попыток. Вы используете ленту?   -  person spencergibb    schedule 20.03.2015
comment
Spring Retry тоже сработает.   -  person Dave Syer    schedule 21.03.2015


Ответы (3)


Если вы используете ленту, вы можете установить свойства, подобные приведенным ниже (заменив идентификатор службы на «localapp»):

localapp.ribbon.MaxAutoRetries=5
localapp.ribbon.MaxAutoRetriesNextServer=5
localapp.ribbon.OkToRetryOnAllOperations=true
person spencergibb    schedule 20.03.2015
comment
Да, я использую ленту. Но я все еще не знаю на 100%, где именно лежат области ответственности. Однако установка его для каждой службы кажется сложной конфигурацией. Есть ли способ установить его по умолчанию для всех пользователей? - person Kristoffer; 23.03.2015
comment
вы можете отказаться от служебной части, так что просто ribbon.* - person spencergibb; 23.03.2015
comment
Действительно? Ну, это хороший лакомый кусочек, о котором я не знал. - person Kristoffer; 23.03.2015
comment
да, именно так netflix делает значения по умолчанию. - person spencergibb; 23.03.2015
comment
Где документация для любого из этих свойств? - person Ben George; 03.03.2017
comment
Вики netflix/ленты и cloud.spring.io/spring-cloud -static/Camden.SR5/ - person spencergibb; 03.03.2017
comment
Какие ошибки будут повторяться? все ошибки? если вызываемая служба возвращает статус 4XX, это также будет повторено? Могу ли я контролировать его на основе ответа? - person Roi Ezra; 29.03.2017
comment
Исключения повторяются. Существует флаг decoded404, который запрещает выдавать ошибку. - person spencergibb; 29.03.2017
comment
@spencergibb, похоже, что IOExceptions будет повторен ... я отладил его, и похоже, что и 400, и 404 возвращаются как нормальный ответ - person Roi Ezra; 30.03.2017
comment
@Roi Ezra использует ленту.retryableStatusCodes, чтобы выбрать коды состояния, для которых вы хотите повторить попытку. - person Piyush; 15.03.2018

ps внизу у Feign есть интерфейс Retryer, который был создан для поддержки таких вещей, как Ribbon.

https://github.com/Netflix/feign/blob/master/core/src/main/java/feign/Retryer.java

person Adrian Cole    schedule 13.04.2015
comment
Адриан, как работает механизм ложного повтора и повторной попытки с лентой? есть ли какой-нибудь пример или документы об этом - person Roi Ezra; 30.03.2017

посмотреть, работает ли свойство - OkToRetryOnAllOperations: true

Вы можете сослаться на приложение -> https://github.com/spencergibb/spring-cloud-sandbox/blob/master/spring-cloud-sandbox-sample-frontend/src/main/resources/application.yml

Спенсер был быстр... опоздал на несколько минут :-)

person Vibhaanshu    schedule 20.03.2015