项目中常用中间件的使用及配置

相应中常用中间件比如:

1. 数据库 

2. redis

3. kafka

4. RestTemplate

RestTemplate 是 spring-web 模块的

有三个构造函数

构造函数主要初始化两点:

1.  添加 HttpMessageConverter ,这个是用来进行序列化的

2. 设置 ClientHttpRequestFactory  http请求工厂,决定使用哪种http客户端完成请求

默认是 SimpleClientHttpRequestFactory

发起请求:

首先 使用 工厂类创建 完成http请求的客户端实例

然后 使用客户端实例执行请求

处理响应

1. 创建客户端实例,一般默认就是使用 URL 打开一个连接 

2. 执行连接,并获取响应数据

3.  对响应数据进行处理

根据响应码,匹配响应枚举

判断响应码是不是 4 或者 5开头的

如果响应码是 4 或者 5 开头,这抛出相应的异常

如果响应 不是 4 或者 5,则对响应流进行解析

一般来说,直接 new RestTemplate 实例就可以用了。

如果需要定制化,就是 定制化 反序列化 和 创建http请求的客户端工厂类。

spring boot 自动配置模块提供了一个 builder

这里 提供了 对 RestTemplate  统一的配置

比如,可以实现 RestTemplateCustomizer接口,定制化 RestTemplate

这里使用HttpClient作为Http请求执行客户端

        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.13</version>
        </dependency>

@Component
public class MyRestTemplateCustomizer implements RestTemplateCustomizer {

    @Override
    public void customize(RestTemplate restTemplate) {
        RequestConfig requestConfig = RequestConfig.custom()
                .setConnectTimeout(50000)
                .setSocketTimeout(50000)
                .setConnectionRequestTimeout(50000).build();

        Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create()
                .register("http", PlainConnectionSocketFactory.getSocketFactory())
                .register("https", SSLConnectionSocketFactory.getSocketFactory())
                .build();
        PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(registry);
        connectionManager.setMaxTotal(10);
        connectionManager.setDefaultMaxPerRoute(10);
        connectionManager.setValidateAfterInactivity(1000);

        CloseableHttpClient httpClient =  HttpClientBuilder.create()
                .setDefaultRequestConfig(requestConfig)
                .setConnectionManager(connectionManager)
                .build();

        ClientHttpRequestFactory clientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);

        restTemplate.setRequestFactory(clientHttpRequestFactory);

    }
}

这是RestTemplate 实例化的过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值