Feign是一个抽象的Http客户端,默认为HttpURLConnection去实现,当然默认的实现效率不高,可以采用HttpClient或者OKHttpClient来进行替换,以提升效率,替换的方法,网上千篇一律都是如下方式:
@Configuration
public class OkHttpConfig {
@Bean
public okhttp3.OkHttpClient okHttpClient(){
return new okhttp3.OkHttpClient.Builder()
//设置连接超时
.connectTimeout(10 , TimeUnit.SECONDS)
//设置读超时
.readTimeout(10 , TimeUnit.SECONDS)
//设置写超时
.writeTimeout(10 , TimeUnit.SECONDS)
//是否自动重连
.retryOnConnectionFailure(true)
.connectionPool(new ConnectionPool(10 , 5L, TimeUnit.MINUTES))
.build();
}
这种方法完全失效,配置的参数完全无效。
正确配置:
- 引入jar包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-okhttp</artifactId>
</dependency>
- 开启okhttpclient
feign:
okhttp:
enabled: true
自行设置参数来看配置是否生效,此时客户端采用的就是okhttpclient。不要进行自行注入。
但是自动配置注入话无法自定义参数,咱们可以通过配置文件进行参数设置如下:
feign:
okhttp:
enabled: true
httpclient: #统一的配置参数,无论是httpclient还是okhttpclient都可以
connection-timeout: 8000
max-connections: 2
更多的参数设置参考
FeignHttpClientProperties
类
Ribbon相关
引入feign之后,自动引入Ribbon,在注解 @FeignClient(value = “SERVER”) value中填写eureka的服务名称就自行进行负载均衡了
版权声明:本文为Lachie_Ye原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。