java - 无法配置 Feign Client 超时

标签 java spring spring-cloud-netflix spring-cloud-feign

我使用 Feign 客户端并禁用了负载均衡器

@FeignClient(name = "my-client", url = "${myHost}", configuration = ClientContext.class)

因此,所有功能区属性都将被忽略。 我尝试通过不同的方式设置自定义超时,但 Feign 会忽略所有这些,并在 60 秒后抛出 TimeoutException。 我尝试使用的方法: 在客户端上下文中: 1)

@Value("${feign.connectTimeout:10000}")
private int connectTimeout;

@Value("${feign.readTimeOut:300000}")
private int readTimeout;

@Bean
public Request.Options options() {
    return new Request.Options(connectTimeout, readTimeout);
}

2)

@Bean
public Request.Options options() {
    return new Request.Options(10_000, 300_000);
}

在 bootstrap.properties 文件中: 1)

feign.client.default.connect-timeout=10000
feign.client.default.read-timeout=300000

2)

feign.client.default.config.connect-timeout=10000
feign.client.default.config.read-timeout=300000

3)

feign.client.default.connectTimeout=10000
feign.client.default.readTimeout=300000

4)

feign.client.default.config.connectTimeout=10000
feign.client.default.config.readTimeout=300000

错误堆栈跟踪是:

Error Message: feign.RetryableException: Read timed out executing GET http://myrequest...
Stacktrace: 
feign.FeignException.errorExecuting(FeignException.java:67)
feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:10)
feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:76)
feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:103)

您能否建议我正确的配置或发现上面的代码块中有什么问题?

最佳答案

正确的解决方案是

@Value("${feign.connectTimeout:10000}")
private int connectTimeout;

@Value("${feign.readTimeOut:300000}")
private int readTimeout;

@Bean
public Request.Options options() {
    return new Request.Options(connectTimeout, readTimeout);
}

并将此添加到 .properties 文件 payer-service-client.feign.hystrix.enabled=false

关于java - 无法配置 Feign Client 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46526431/

相关文章:

java - 以两个 ArrayLists 作为参数的方法

java - 迭代器是否给我一个深拷贝?

java - 在 Java 上将字符串分配给字节并在开头指定字符串长度

eclipse - spring注解配置java.lang.NoClassDefFoundError : org/objectweb/asm/util/TraceClassVisitor

model-view-controller - 使用 Grails 时,我应该关心 Open Session in View 吗?

spring-boot - 带有功能区的 Spring Cloud 不会忽略服务器

java - Java 导致 Oracle 中存在大量非 Activity session

java - JHipster 限制不使用默认 JWT 配置的用户 session

spring - 在Docker上运行的Spring Cloud Netflix应用为什么被容器杀死了?

spring - @LoadBalanced RestTemplate 调用嵌套上下文端点