天天看點

HttpClient連接配接池的配置

public class HttpUtil {
    private PoolingHttpClientConnectionManager cm;
    private  CloseableHttpClient httpClient;
    private RequestConfig requestConfig;
    //将請求連接配接池設定為單例
    private static class SingletonCreater{
        private static final HttpUtil httpUtil = new HttpUtil();
    }
    public static final HttpUtil getInstance(){
        return SingletonCreater.httpUtil;
    }




    private HttpUtil() {
         cm = new PoolingHttpClientConnectionManager();
        //連接配接池最大生成連接配接數
        cm.setMaxTotal(800);
        // 預設設定route最大連接配接數
        cm.setDefaultMaxPerRoute(800);
        // 指定專門的route,設定最大連接配接數,因為IP隻有一個,不需要設定指定IP的最大連接配接數量
        // HttpHost localhost = new HttpHost("locahost", 80);
        // cm.setMaxPerRoute(new HttpRoute(localhost), 50);
        // 設定重定向政策
//        LaxRedirectStrategy redirectStrategy = new LaxRedirectStrategy();
        //設定請求和傳輸逾時時間
        requestConfig = RequestConfig.custom()
                .setConnectionRequestTimeout(600000)
                .setConnectTimeout(FinalCode.REQUEST_TIMEOUT)
                .setSocketTimeout(FinalCode.REQUEST_SOCKET_TIME).build();
        // 建立httpClient
         httpClient= HttpClients.custom()
                .setConnectionManager(cm)
                 .setDefaultRequestConfig(requestConfig)
//                .setRedirectStrategy(redirectStrategy)
                .build();


    }

    public CloseableHttpClient getHttpClient() {
        return httpClient;
    }
}      

繼續閱讀