首页 > 其他分享 >高性能RestTemplate配置

高性能RestTemplate配置

时间:2023-07-16 20:34:19浏览次数:45  
标签:HTTP 配置 RestTemplate factory ClientHttpRequestFactory 高性能 return public

简述RestTemplate
  • Spring框架中的RestTemplate是访问Rest服务的客户端

  • 底层通过使用java.net包实现创建HTTP请求

  • 通过使用ClientHttpRequestFactory指定不同的HTTP请求方式,主要提供了两种实现方式

    • ​ SimpleClientHttpRequest(默认)

      • 底层使用J2SE通过的方法(java.net包提供的方法),创建底层的HTTP请求
      • 其实核心的createRequest方法,每次调用都会创建一个新的连接,造成极大的资源浪费,而且若连接未及时释放,会因为无法建立新的连接导致后面的请求阻塞
    • HttpComponentsClientHttpRequestFactory

      • 底层使用HttpClient访问远程的HTTP访问(HttpClient支持HTTP连接池,HttpClient有性能优化)
RestTemplateConfig配置类 (采用HttpComponentsClientHttpRequestFactory)
@Configuration
public class RestTemplateConfig {

    @Bean
    public RestTemplate restTemplate(ClientHttpRequestFactory httpRequestFactory){
        return new RestTemplate(httpRequestFactory);
    }
    
//	  默认的
//    @Bean
//    public ClientHttpRequestFactory simpleClientHttpRequestFactory(){
//        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
//        factory.setReadTimeout(10000);
//        factory.setConnectTimeout(10000);
//        return factory;
//    }

    @Bean
    public ClientHttpRequestFactory httpRequestFactory(){
        return new HttpComponentsClientHttpRequestFactory(httpClient());
    }

    @Bean
    public HttpClient httpClient(){
        
        Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create()
                .register("http", PlainConnectionSocketFactory.getSocketFactory())
                .register("https", SSLConnectionSocketFactory.getSocketFactory())
                .build();

        PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(registry);


        //设置连接池最大是500个连接
        connectionManager.setMaxTotal(500);
        //每个主机请求一个域名的最大并发为300
        //每个主机请求多个域名的并发和最大为500
        connectionManager.setDefaultMaxPerRoute(300);


        RequestConfig requestConfig = RequestConfig.custom()
                //返回数据的超时时间
                .setSocketTimeout(20000)
                //连接上服务器的超时时间
                .setConnectTimeout(10000)
                //从连接池中获取连接的超时时间
                .setConnectionRequestTimeout(1000)
                .build();


        return HttpClientBuilder.create().setDefaultRequestConfig(requestConfig)
                .setConnectionManager(connectionManager)
                .build();
    }

}

标签:HTTP,配置,RestTemplate,factory,ClientHttpRequestFactory,高性能,return,public
From: https://www.cnblogs.com/xietingwei/p/17558473.html

相关文章

  • redis docker 配置文件
    RedisDocker配置文件详解Redis是一个基于内存的开源数据库,用于存储和检索数据。Docker是一种轻量级容器化平台,可以快速部署和管理应用程序。通过将Redis与Docker结合使用,我们可以轻松地创建和管理Redis实例。在使用Docker部署Redis时,我们需要创建一个配置文件,用于定义Redis的行......
  • redis 命令行配置
    Redis命令行配置教程1.概述在本教程中,我将指导你如何在Redis数据库中配置命令行。Redis是一个开源的内存数据库,被广泛用于缓存和数据存储。通过命令行配置Redis,你可以设置数据库的参数、修改键值对、执行查询操作等。2.步骤概览下面是整个配置过程的步骤概览表格:步......
  • redis spring boot 集群 配置
    RedisSpringBoot集群配置1.概述在使用SpringBoot开发应用程序时,我们可能会遇到需要使用Redis集群来存储和缓存数据的情况。Redis是一个高性能的键值存储数据库,而SpringBoot提供了与Redis集群进行集成的便捷方式。本文将介绍在SpringBoot应用程序中配置Redis集群的步骤,包......
  • spring boot flowable 参数配置 重试参数配置
    SpringBootFlowable参数配置及重试参数配置概述在使用SpringBootFlowable框架开发工作流应用时,我们可能会遇到需要进行参数配置和重试参数配置的情况。本文将为刚入行的开发者介绍如何实现SpringBootFlowable参数配置及重试参数配置,并提供详细的步骤和代码示例。参数配置......
  • 配置C语言环境(VS.code)
    配置C语言环境1.下载并安装vs.code地址:https://code.visualstudio.com/2.安装c/c++扩展3.安装编译器(MinGW-W64GCC)版本:x86_64-8.1.0-release-win32-seh-rt_v6-rev0_2度盘链接:链接:https://pan.baidu.com/s/1HRrXtiAc_qrcUdhzIGFXpA?pwd=ehym提取码:ehym--来自百度网盘超......
  • VMware ubuntu网卡桥接模式配置
    仅对以下环境试验VMware16.0.0build-16894299ubuntu20.04开发板:s5p6818一个fast家用路由器连接:一根网线连开发板,一根网线连路由器lan口和主机,一根网线连笔记本和路由器lan口为什么笔记本不用无线网卡?因为路由器没连网,我要连internet,无线网卡连手机热点。试验过程:连接好......
  • WSL环境中安装过Java并配置VSCode
    WSL环境已经配置好,现在开始在Ubuntu里面安装Java!一下载tar包方式手动安装1.1下载地址:https://www.oracle.com/java/technologies/downloads/1.2在上面的地址中选择合适的版本进行下载,然后将下载的安装包拷贝到wsl系统所在目录,然后进入Ubuntu,找到拷贝的安装包,比如我的wsl迁移......
  • python3: pip3 网络源配置
    python3:pip3网络源配置    一、pip3网络源配置 1、没有的路径、文件,要自己建立。[[email protected]]$cd~/.pip[[email protected]]$[[email protected]]$[[email protected]]$lspip.conf[[email protected]]$[[email protected]]$[[email protected]]$catpip.conf[global]index-ur......
  • zookeeper-3.4.6的配置与使用
    1、下载我给大家配置好的链接:https://pan.baidu.com/s/1X0GG3yrrw9B85l9SPh2rOA提取码:uk042、解压下载的压缩包,解压到d盘的mysoft文件夹下,如果没有就创建一个,这样你就不用改配置了,如果没有d盘,就在放在c盘下,等下在我写好的配置文件中,修改盘符即可  3、如果你没有和我上面的......
  • zookepper的下载和配置
    1、打开zookepper的官网,或百度搜索ApacheZooKeeper 2、进入下载页面  3、下载好的文件如下 ......