核心初始化类:FeignClientFactoryBean、FeignAutoConfiguration、FeignClientsConfiguration、HttpClient5FeignConfiguration
- 开关配置
# 组件开关,默认:true
spring.emily.transfer.feign.enabled=true
- 支持全局设置超时时间及单个FeignClient设置超时时间
# 默认配置
spring.cloud.openfeign.client.default-config=default
# 连接超时时间,默认:60000毫秒
spring.cloud.openfeign.client.config.default.connect-timeout=60000
# 读取超时时间,默认:10000毫秒
spring.cloud.openfeign.client.config.default.read-timeout=10000
# 日志级别,默认:none
spring.cloud.openfeign.client.config.default.logger-level=full
# 连接超时时间,默认:60000毫秒
spring.cloud.openfeign.client.config.test.connect-timeout=5000
# 读取超时时间,默认:10000毫秒
spring.cloud.openfeign.client.config.test.read-timeout=1000
# 日志级别,默认:none
spring.cloud.openfeign.client.config.test.logger-level=full
- 默认全局超时FeignClient使用示例:
@FeignClient(value = "connect", url = "http://127.0.0.1:9000/api/feign")
public interface DefaultFeignHandler {
/**
* 默认超时请求
*/
@GetMapping("connect")
BaseResponse<String> getConnect(@RequestParam("timeout") int timeout);
}
- 自定义超时时间使用示例:
@FeignClient(value = "custom", url = "http://127.0.0.1:9000/api/feign", contextId = "custom")
public interface CustomFeignHandler {
/**
* 自定义超时请求
*/
@GetMapping("custom")
BaseResponse<String> getCustom(@RequestParam("timeout") int timeout);
}
- 调用三方接口默认采用HttpURLConnection
调用链路(倒序):
feign.Client的默认实现类feign.Client.Default
org.springframework.cloud.openfeign.FeignCachingInvocationHandlerFactory#create
- Spring Cloud OpenFeign 4不在支持Apache HttpClient 4
Starting with Spring Cloud OpenFeign 4, the Feign Apache HttpClient 4 is no longer supported. We suggest using Apache HttpClient 5 instead.
- Appache HttpClient 5使用
添加依赖:
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-hc5</artifactId>