天天看点

Feign Client 超时时间配置不生效解决方案问题描述

解决方案

Feign Client 的 connectTimeout 和 readTimeout 需要同时配置:

feign.client.config.my-api.connectTimeout = 10000
feign.client.config.my-api.readTimeout = 600000
           

如果只配置了 readTimeout 或 connectTimeout 的其中一条,配置不生效。

问题描述

Feign Client 配置如下:

feign.client.config.default.connectTimeout = 3000
feign.client.config.default.readTimeout = 3000

feign.client.config.my-api.readTimeout = 600000
           

默认超时时间配置了 3 秒。

由于 my-api 的响应数据较大,于是配置了 10 分钟超时时间。

执行后发现,my-api 请求仍然 3 秒后就抛出如下异常:

Caused by: feign.RetryableException: Read timed out executing POST http://my-api
	at feign.FeignException.errorExecuting(FeignException.java:67)
	at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:104)
	at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:76)
	at feign.hystrix.HystrixInvocationHandler$1.run(HystrixInvocationHandler.java:108)
	at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:302)
	at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:298)
	at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:46)