附:SpringCloud之系列彙總跳轉位址
RestTemplateConfig
package com.newland.iot.config;
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy;
import org.apache.http.impl.client.DefaultHttpRequestRetryHandler;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
import java.util.concurrent.TimeUnit;
@Configuration
public class RestTemplateConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
RestTemplate restTemplate = new RestTemplate(RestTemplateConfig.newClientHttpRequestFactory());
return restTemplate;
}
/**
* 自定義RestTemplate配置
* 1、設定最大連接配接數
* 2、設定路由并發數
* 3、設定重試次數
* @author Hux
* @return
*/
public static ClientHttpRequestFactory newClientHttpRequestFactory() {
// 長連接配接保持時長30秒
PoolingHttpClientConnectionManager pollingConnectionManager = new PoolingHttpClientConnectionManager(
30, TimeUnit.SECONDS);
// 最大連接配接數
pollingConnectionManager.setMaxTotal(3000);
// 單路由的并發數
pollingConnectionManager.setDefaultMaxPerRoute(100);
HttpClientBuilder httpClientBuilder = HttpClients.custom();
httpClientBuilder.setConnectionManager(pollingConnectionManager);
// 重試次數2次,并開啟
httpClientBuilder.setRetryHandler(new DefaultHttpRequestRetryHandler(2,
true));
// 保持長連接配接配置,需要在頭添加Keep-Alive
httpClientBuilder
.setKeepAliveStrategy(new DefaultConnectionKeepAliveStrategy());
HttpClient httpClient = httpClientBuilder.build();
// httpClient連接配接底層配置clientHttpRequestFactory
HttpComponentsClientHttpRequestFactory clientHttpRequestFactory =
new HttpComponentsClientHttpRequestFactory(httpClient);
clientHttpRequestFactory.setReadTimeout(5000);// ms
clientHttpRequestFactory.setConnectTimeout(15000);//
return clientHttpRequestFactory;
}
}
附:SpringCloud之系列彙總跳轉位址