Feign并发优化

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

猜你喜欢

转载自blog.csdn.net/nsa65223/article/details/142877827