如何设置自定义Feign客户端连接超时?
How to set custom Feign client connection timeout?
我有 Spring 具有此 Gradle 依赖项的启动应用程序:
compile("org.springframework.cloud:spring-cloud-starter-eureka")
compile("org.springframework.cloud:spring-cloud-starter-feign")
compile("org.springframework.cloud:spring-cloud-starter-ribbon")
compile("org.springframework.cloud:spring-cloud-starter-hystrix")
compile("org.springframework.cloud:spring-cloud-starter-config")
我还有Feign客户端:
@FeignClient(name = "client")
public interface FeignService {
@RequestMapping(value = "/path", method = GET)
String response();
}
我的application.properties
:
client.ribbon.listOfServers = http://localhost:8081
ribbon.eureka.enabled=false
当查询时间超过 1 秒时出现异常:
com.netflix.hystrix.exception.HystrixRuntimeException: response timed-out and no fallback available.
所以我的问题是:如何设置自定义 Feign 客户端连接超时?例如2秒。
我用这个 answer on question: Hystrix command fails with “timed-out and no fallback available”.
解决了我的问题
我将 hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=4000
添加到我的 application.properties
以设置自定义超时。
您可以使用 application.yaml 文件的配置属性配置超时:
feign:
client:
config:
default:
connectTimeout: 5000
readTimeout: 5000
请注意,这将更改您的默认伪装配置,如果您只想为您的客户端更新超时,请将 default
替换为 @FeignClient
中配置的名称,在您的情况下它将是 client
,另一件事是您必须同时指定 connectTimeout
和 readTimeout
才能生效。
有关详细信息,请参阅:documentation
我有 Spring 具有此 Gradle 依赖项的启动应用程序:
compile("org.springframework.cloud:spring-cloud-starter-eureka")
compile("org.springframework.cloud:spring-cloud-starter-feign")
compile("org.springframework.cloud:spring-cloud-starter-ribbon")
compile("org.springframework.cloud:spring-cloud-starter-hystrix")
compile("org.springframework.cloud:spring-cloud-starter-config")
我还有Feign客户端:
@FeignClient(name = "client")
public interface FeignService {
@RequestMapping(value = "/path", method = GET)
String response();
}
我的application.properties
:
client.ribbon.listOfServers = http://localhost:8081
ribbon.eureka.enabled=false
当查询时间超过 1 秒时出现异常:
com.netflix.hystrix.exception.HystrixRuntimeException: response timed-out and no fallback available.
所以我的问题是:如何设置自定义 Feign 客户端连接超时?例如2秒。
我用这个 answer on question: Hystrix command fails with “timed-out and no fallback available”.
解决了我的问题我将 hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=4000
添加到我的 application.properties
以设置自定义超时。
您可以使用 application.yaml 文件的配置属性配置超时:
feign:
client:
config:
default:
connectTimeout: 5000
readTimeout: 5000
请注意,这将更改您的默认伪装配置,如果您只想为您的客户端更新超时,请将 default
替换为 @FeignClient
中配置的名称,在您的情况下它将是 client
,另一件事是您必须同时指定 connectTimeout
和 readTimeout
才能生效。
有关详细信息,请参阅:documentation