小编gad*_*kiy的帖子

无法配置 Feign Client 超时

我正在使用 Feign Client 并禁用负载均衡器

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

因此,所有功能区属性都将被忽略。我尝试通过不同的方式设置自定义超时,但 Feign 会忽略所有这些,并在 60 秒后抛出 TimeoutException。我尝试使用的方法:在 ClientContext 中: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);
}
Run Code Online (Sandbox Code Playgroud)

2)

@Bean
public Request.Options options() {
    return new Request.Options(10_000, 300_000);
}
Run Code Online (Sandbox Code Playgroud)

在 bootstrap.properties 文件中:1)

feign.client.default.connect-timeout=10000
feign.client.default.read-timeout=300000
Run Code Online (Sandbox Code Playgroud)

2)

feign.client.default.config.connect-timeout=10000
feign.client.default.config.read-timeout=300000
Run Code Online (Sandbox Code Playgroud)

3)

feign.client.default.connectTimeout=10000
feign.client.default.readTimeout=300000
Run Code Online (Sandbox Code Playgroud)

4)

feign.client.default.config.connectTimeout=10000
feign.client.default.config.readTimeout=300000
Run Code Online (Sandbox Code Playgroud)

错误堆栈跟踪是:

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)
Run Code Online (Sandbox Code Playgroud)

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

java spring spring-cloud-feign spring-cloud-netflix

4
推荐指数
1
解决办法
1万
查看次数