【发布时间】:2017-01-28 21:10:06
【问题描述】:
我有一个使用 3 个假装客户端的服务。每次我启动我的应用程序时,我都会在第一次调用任何 feign 客户端时收到 TimeoutException。
在一切稳定之前,我必须至少触发每个 feign 客户端一次。在网上环顾四周,问题是 feign 或 hystrix 内部的某些东西是延迟加载的,解决方案是创建一个覆盖 spring 默认值的配置类。我已经用下面的代码试过了,但它仍然没有帮助。我仍然看到同样的问题。有人知道解决这个问题吗?是通过 hystrix 回调调用 feignclient 两次的唯一解决方案吗?
@FeignClient(value = "SERVICE-NAME", configuration =ServiceFeignConfiguration.class)
@Configuration
public class ServiceFeignConfiguration {
@Value("${service.feign.connectTimeout:60000}")
private int connectTimeout;
@Value("${service.feign.readTimeOut:60000}")
private int readTimeout;
@Bean
public Request.Options options() {
return new Request.Options(connectTimeout, readTimeout);
}
}
Spring Cloud - Brixton.SR4 Spring Boot - 1.4.0.RELEASE
这一切都在 docker 中运行 Ubuntu - 12.04 码头工人 - 1.12.1 Docker-Compose - 1.8
【问题讨论】:
-
我很想看看第一次调用总是超时的示例。
-
听起来不错,我现在添加一个堆栈跟踪
-
我看到了一个超时堆栈跟踪,我正在寻找一个重现问题的示例项目。抱歉我没说清楚。
-
我已更新到 desc 以包含版本号。我想无法尝试使用 config/eureka/4 micros / 创建一个 githib,并尝试从 4 号开始调用其他 3 个。它应该会显示出来,因为这是我的基本设置。我们有大约 10 项服务在使用,但我认为这不是 eureka 注册很多客户的问题。我也在使用 docker,并且也会包含这些版本号。
标签: spring-cloud hystrix spring-cloud-feign