springboot(五)设置Httpclient和Spring的整合


设置HttpclientSpring的整合

import org.apache.http.client.config.RequestConfig;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.context.annotation.PropertySource;

import org.springframework.context.annotation.Scope;

 

import com.taotao.common.httpclient.IdleConnectionEvictor;

 

@Configuration

@PropertySource(value = "classpath:httpclient.properties")

public class HttpclientSpringConfig {

 

    @Value("${http.maxTotal}")

    private Integer httpMaxTotal;

 

    @Value("${http.defaultMaxPerRoute}")

    private Integer httpDefaultMaxPerRoute;

 

    @Value("${http.connectTimeout}")

    private Integer httpConnectTimeout;

 

    @Value("${http.connectionRequestTimeout}")

    private Integer httpConnectionRequestTimeout;

 

    @Value("${http.socketTimeout}")

    private Integer httpSocketTimeout;

 

    @Value("${http.staleConnectionCheckEnabled}")

    private Boolean httpStaleConnectionCheckEnabled;

 

    @Autowired

    private PoolingHttpClientConnectionManager manager;

 

    @Bean

    public PoolingHttpClientConnectionManager poolingHttpClientConnectionManager() {

        PoolingHttpClientConnectionManager poolingHttpClientConnectionManager = new PoolingHttpClientConnectionManager();

        // 最大连接数

        poolingHttpClientConnectionManager.setMaxTotal(httpMaxTotal);

        // 每个主机的最大并发数

        poolingHttpClientConnectionManager.setDefaultMaxPerRoute(httpDefaultMaxPerRoute);

        return poolingHttpClientConnectionManager;

    }

 

    // 定期关闭无效连接

    @Bean

    public IdleConnectionEvictor idleConnectionEvictor() {

        return new IdleConnectionEvictor(manager);

    }

 

    // 定义Httpclient

    @Bean

    @Scope("prototype")

    public CloseableHttpClient closeableHttpClient() {

        return HttpClients.custom().setConnectionManager(this.manager).build();

    }

 

    // 请求配置

    @Bean

    public RequestConfig requestConfig() {

        return RequestConfig.custom().setConnectTimeout(httpConnectTimeout) // 创建连接的最长时间

                .setConnectionRequestTimeout(httpConnectionRequestTimeout) // 从连接池中获取到连接的最长时间

                .setSocketTimeout(httpSocketTimeout) // 数据传输的最长时间

                .setStaleConnectionCheckEnabled(httpStaleConnectionCheckEnabled) // 提交请求前测试连接是否可用

                .build();

    }

 

}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM