文档章节

远程调用----HttpClient连接池

苗小喵
 苗小喵
发布于 2019/12/06 16:29
字数 398
阅读 44
收藏 0

学连接池首先要明白:

    1.http连接池也不是万能的,过多的长连接会占用服务器资源,导致其他服务受阻

    2.http连接池值适用于请求是经常访问同一主机(或同一接口)的情况下

    3.并发数不高的情况下资源利用率低下

如何使用http连接池提高服务器性能??

    1. 使用 HttpClients.custom()可以构建自定义CloseableHttpClient 对象

            setConnectionManager  用于配置连接

            setDefaultRequestConfig  用于配置请求

    2.通过PoolingHttpClientConnectionManger对象 可以为连接配置连接数 和 并发数

            setMaxTotal(数值);   设置最大连接数

            setDefaultMaxPerRoute(数值);  设置并发访问数

  3. 通过 RequestConfig.custom() 可以配置各种超时时间

 

@Test
public void testDemo01() throws IOException {
    //1 配置连接管理
    PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
    // 1.1 设置最大连接数
    connectionManager.setMaxTotal(1000);
    // 1.2 设置并发访问数
    connectionManager.setDefaultMaxPerRoute(20);

    //2 请求配置
    RequestConfig requestConfig = RequestConfig.custom()
            .setConnectTimeout(1000)
            .setConnectionRequestTimeout(500)
            .setSocketTimeout(10 * 1000)
            .build();

    // 3 获得工具类
    CloseableHttpClient httpClient = HttpClients.custom()
            .setConnectionManager(connectionManager)
            .setDefaultRequestConfig(requestConfig)
            //重定向策略
            .setRedirectStrategy(new LaxRedirectStrategy())
            .build();

    // 4 发送请求
    CloseableHttpResponse response = null;
    try {
        HttpGet httpGet = new HttpGet("http://localhost:9090/user");

        response = httpClient.execute(httpGet);

        if(response.getStatusLine().getStatusCode() == 200){
            String str = EntityUtils.toString(response.getEntity(),"UTF-8");
            System.out.println(str);
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        response.close();
    }

© 著作权归作者所有

苗小喵

苗小喵

粉丝 6
博文 28
码字总数 15957
作品 0
宿迁
私信 提问
.NET Core 2.1中的HttpClientFactory最佳实践

ASP.NET Core 2.1中出现一个新的HttpClientFactory功能, 它有助于解决开发人员在使用HttpClient实例从其应用程序发出外部Web请求时可能遇到的一些常见问题。 介绍 在.NETCore平台的2.1新增了...

dotNET跨平台
2018/08/16
0
0
.NetCore 2.1中的HttpClientFactory最佳实践

.NET Core 2.1中的HttpClientFactory最佳实践 ASP.NET Core 2.1中出现一个新的HttpClientFactory功能, 它有助于解决开发人员在使用HttpClient实例从其应用程序发出外部Web请求时可能遇到的一...

Chaunce
2018/08/14
0
0
Apache HttpClient 资源释放、请求超时,导致线程池用光、内存不足

Apache HttpClient,据说很强大,可以支持峰值一秒7万以上的请求。不过需要注意一些资源释放和超时处理的问题。 问题1:线程资源无法释放,最终导致内存不足、或线程池被用光。 问题代码: ...

onedotdot
2018/10/17
485
0
Spring RestTemplate 实践

什么是RestTemplate? RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。 调用RestTemplate的默认构...

单红宇
2016/03/18
0
0
HttpClient-4.5总结(3)

接着上一篇,我们在使用HttpClient的时候更多的是需要自己根据业务特点创建自己定制化的HttpClient实例,而不是像之前那样使用 废话不多说,直接上代码(Talk is cheap, show me the code!):...

李不言
2016/03/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 宇宙银河乱弹英雄传 —— @FalconChen

1Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @巴拉迪维 :Axxis的单曲《Only God Knows》 最近只听摇滚,挖了好多以前没听过的歌,蛮好。#今日歌曲推荐# 《Only God Knows》- Axxis 手机...

小小编辑
今天
137
1
Safari Date() 函数对日期时间字符串(yyyy-MM-dd HH:mm:ss) 提示NaN的问题

今天发现一个奇怪的问题,在iPhone使用 safari 选择定时发布文章到OSC,选择时间后提示不是合法的时间,判断时间的代码如下: var d = new Date('2020-01-23 23:15'); if (isNaN(d)) {...

FalconChen
昨天
124
0
ActiveMQ学习之通讯协议

一、支持的通讯协议 ActiveMQ支持的client-broker通讯协议有:TCP、NIO、UDP、SSL、HTTP(S)、VM 其中配置Transport Connector的文件在ActiveMQ安装目录的conf/activemq.xml中的<TransportCon...

冥焱
昨天
91
0
应急广播户户通平台

一、平台概述 应急广播户户通平台为软硬一体化广播服务解决方案。实现了应急广播、视音频及图片文字信息、调频及数字广播FM、天气预报信息接收功能,以及视音频播放、智能机器人、电子日历等...

neocean
昨天
133
0
如何为Apache 2.2启用mod_rewrite

我已经在我的Vista机器上安装了新的Apache 2.2,一切正常,除了mod重写。 我没有注释 LoadModule rewrite_module modules/mod_rewrite.s 但是我的重写规则都没有,即使是简单的重写规则 Re...

javail
昨天
53
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部