feign是一个抽象的Http客户端,默认为HttpURLConnection去实现,当然默认的实现效率不高,可以采用HttpClient或者OKHttpClient来进行替换,以提升效率,替换的方法
pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
<version>你的Feign版本</version>
</dependency>
配置Feign客户端
import feign.Feign;
import feign.httpclient.ApacheHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
@Configuration
public class FeignClientBuilder {
@Bean
public Feign.Builder builder() {
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
// 配置最大连接数
connectionManager.setMaxTotal(1000);
// 配置每个路由的默认最大连接数
connectionManager.setDefaultMaxPerRoute(1000);
return Feign.builder()
.client(new ApacheHttpClient(HttpClients.custom()
.setConnectionManager(connectionManager)
.build()));
}
}
application.yml配置
配置连接池
feign:
httpclient:
enabled: true
connection-timeout: 8000
max-connections: 1000
max-connections-per-route: 1000
在FeignClientFactoryBean中的loadBalance方法中打断点:
确定是否生效
更多的参数设置参考FeignHttpClientProperties
类