Мы используем Spring Boot 2.0.0.RELEASE с весеннее облако-стартер-лента-netflix для наших микросервисов. Я установил ribbon.readTimeout=1000 на медленные запросы и проверяю его с помощью нашей точки останова настройки микросервиса внутри метода @GetMapping, не отправляя ответа. В моем тесте я ждал 10 минут и не получил никаких исключений. Похоже, что readTimeout вообще отсутствует.
Конфигурация услуги
ribbon:
ReadTimeout: 1000
my-service:
ribbon:
eureka:
enabled: false
listOfServers: localhost:8080
ReadTimeout: 1000
ConnectTimeout: 1000
Единственный способ заставить его работать - это ribbon.restclient.enabled=true. Но этот клиент устарел, и я не хочу его использовать.




Не все свойства ленты поддерживаются spring-cloud-netflix при использовании с Spring RestTemplate. Некоторые свойства ленты работают, как описано в документы, но ReadTimeout не входит в их число. Так что это не работает, но это по дизайну (согласно ответу на этот проблема). Однако, если вы используете Spring RestTemplate, вы можете установить его прямо там, например:
@LoadBalanced
@Bean
RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
return restTemplateBuilder
.setReadTimeout(2000)
.build();
}
@AlexeySaltanov Я рад, что это помогло. Поскольку он решил вашу проблему, не могли бы вы отметить этот ответ как принятый и поставить ему +1?
Я попытался установить это свойство тайм-аута в своем application.yml, но получил сообщение «Неизвестное свойство 'tape.ReadTimeout'». Этот способ сработал отлично!
Мы находим это:
serviceA.ribbon.ReadTimeout=8000
хорошо работать с Spring Boot 2.1.0.RELEASE, используя Spring Cloud Finchley.SR2 и
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
Однако в клиенте мы используем ленту через симуляцию так:
@FeignClient(value = "serviceA")
public interface ServiceAClient {
@GetMapping(value = "/test")
String getTest();
}
Затем мы используем тестовый макет, чтобы ввести фиксированную задержку сверх таймаута чтения, чтобы убедиться, что он работает нормально.
Думаю, нужно настроить таймауты Hystrix. Взгляните на эту часть документации: http://cloud.spring.io/spring-cloud-static/Edgware.RELEASE/single/spring-cloud.html#_hystrix_timeouts_and_ribbon_clients Это могло быть что-то вроде этого:
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 1100
ribbon:
ConnectTimeout: 1000
ReadTimeout: 1000
Спасибо Вам большое. Я установил тайм-аут запроса для RestTemplate, и теперь он работает нормально.