1.restTemplate
@Autowired
private TestImplProperties testImplProperties;
@Bean
public RestTemplate testTemplate() {
HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory();
// 指定連接池配置,否則線上容易出現(xiàn)請求排隊(duì)導(dǎo)致接口超時問題
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
connectionManager.setMaxTotal(300);
//單host(可以理解為單域名)最大并發(fā)數(shù),在依賴的外部系統(tǒng)數(shù)量較少時,可以配置和maxTotal一致。
connectionManager.setDefaultMaxPerRoute(100);
httpRequestFactory.setHttpClient(HttpClientBuilder.create().setConnectionManager(connectionManager).build());
httpRequestFactory.setConnectionRequestTimeout(30 * 1000);
httpRequestFactory.setConnectTimeout(30 * 1000);
httpRequestFactory.setReadTimeout(30 * 3000);
RestTemplate restTemplate = new RestTemplate(httpRequestFactory);
restTemplate.getMessageConverters().add(new FastJsonHttpMessageConverter());
QueryParamsUrlTemplateHandler handler = new QueryParamsUrlTemplateHandler();
handler.setFileCenterProperties(testImplProperties);
restTemplate.setUriTemplateHandler(handler);
return restTemplate;
}
2.TestImplProperties
@Data
@ConfigurationProperties(prefix = "xx.pe")
public class TestImplProperties implements TestProperties{
private String xx;
private String xx;
private String xx;
}
3.TestProperties
public interface TestProperties{
String getXx();
String getXx();
String getXx();
}