基于httpclient4.5.3

高并发需求

性能和资源  空间换时间和时间换空间的问题不再讨论。高并发需求肯定消耗的资源是要多一些的。

先详读一下tcp,socket,http的概念和之间的联系。不然不好理解。

1.开启连接池 

Registry<ConnectionSocketFactory> registry = registryBuilder.build();
connectionManager = new PoolingHttpClientConnectionManager(registry);
connectionManager.setMaxTotal(500);
connectionManager.setDefaultMaxPerRoute(50);//例如默认每路由最高50并发,具体依据业务来定

 

2.开启长连接,虽然默认也是,这样更保险一点。

myStrategy= new ConnectionKeepAliveStrategy() {
    @Override
    public long getKeepAliveDuration(HttpResponse response, HttpContext context) {
        HeaderElementIterator it = new BasicHeaderElementIterator
                (response.headerIterator(HTTP.CONN_KEEP_ALIVE));
        while (it.hasNext()) {
            HeaderElement he = it.nextElement();
            String param = he.getName();
            String value = he.getValue();
            if (value != null && param.equalsIgnoreCase
                    ("timeout")) {
                return Long.parseLong(value) * 1000;
            }
        }
        return 60 * 1000;//如果没有约定,则默认定义时长为60s
    }
};

3.创建httpclient对象

httpClient = HttpClients.custom()
        .setConnectionManager(connectionManager).setKeepAliveStrategy(myStrategy)
        .setDefaultRequestConfig(RequestConfig.custom().setConnectTimeout(500)//建立连接过期时间
                .setConnectionRequestTimeout(500)//请求过期时间
                .setSocketTimeout(500).build())//socket过期时间
        .build();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值