【httpclient连接池的实现】

public class HttpClient {
   
    private static final Logger logger = LoggerFactory.getLogger(HttpClient.class);

    private final static PoolingHttpClientConnectionManager POOLING_HTTP_CLIENT_CONNECTION_MANAGER;

    private final static RequestConfig REQUEST_CONFIG;

    private final static int MAX_TIMEOUT = 10 * 1000;

    static {
   
        // 设置连接池
        POOLING_HTTP_CLIENT_CONNECTION_MANAGER = new PoolingHttpClientConnectionManager(createRegistry());
        // 设置连接池大小
        POOLING_HTTP_CLIENT_CONNECTION_MANAGER.setMaxTotal(100);
        POOLING_HTTP_CLIENT_CONNECTION_MANAGER.setDefaultMaxPerRoute(POOLING_HTTP_CLIENT_CONNECTION_MANAGER.getMaxTotal());

        RequestConfig.Builder requestConfigBuilder = RequestConfig.custom();
        //客户端在向服务器发送数据的时候,不需要先向服务器发起一个请求看服务器是否愿意接受客户端将要发送的数据
        requestConfigBuilder.setExpectContinueEnabled(false);
        //设置Cookie策略
        requestConfigBuilder.setCookieSpec(CookieSpecs.IGNORE_COOKIES);
        // 设置连接超时
        requestConfigBuilder.setConnectTimeout(MAX_TIMEOUT);
        // 设置读取超时
        requestConfigBuilder.setSocketTimeout(MAX_TIMEOUT);
        // 设置从连接池获取连接实例的超时
        requestConfigBuilder.setConnectionRequestTimeout(MAX_TIMEOUT);
        REQUEST_CONFIG = requestConfigBuilder.build();
    }

    private static Registry<ConnectionSocketFactory> createRegistry() {
   
        Registry<ConnectionSocketFactory> registry = null;
        try {
   
            SSLContextBuilder sslContextBuilder = new SSLContextBuilder();
            sslContextBuilder.loadTrustMaterial(null, (x509Certificates, s) -> true);
            SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContextBuilder.build(), NoopHostnameVerifier.INSTANCE);
            registry = RegistryBuilder.<ConnectionSocketFactory>create()
                    .register("http", new PlainConnectionSocketFactory())
                    .register("https", sslConnectionSocketFactory)
                    .build();
        } catch (Throwable t) {
   
            logger.error("创建org.apache.http.config.Registry<ConnectionSocketFactory>时发生异常", t);
        }
        return registry;
    }

    private static CloseableHttpClient createCloseableHttpClient() {
   
        try {
   
            HttpClientBuilder httpClientBuilder = HttpClientBuilder.create
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值