package com.stylefeng.guns;
|
|
import org.apache.http.config.SocketConfig;
|
import org.apache.http.impl.client.CloseableHttpClient;
|
import org.apache.http.impl.client.HttpClientBuilder;
|
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
|
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
|
import org.springframework.http.converter.StringHttpMessageConverter;
|
import org.springframework.web.client.RestTemplate;
|
|
import java.nio.charset.StandardCharsets;
|
|
/**
|
* SpringBoot方式启动类
|
*
|
* @author stylefeng
|
* @Date 2017/5/21 12:06
|
*/
|
@EnableEurekaClient//注册为服务提供者
|
@SpringBootApplication
|
public class GunsApplication {
|
|
private final static Logger logger = LoggerFactory.getLogger(GunsApplication.class);
|
|
public static void main(String[] args) {
|
SpringApplication.run(GunsApplication.class, args);
|
logger.info("GunsApplication is success!");
|
}
|
|
|
/**
|
* 向Spring容器中定义RestTemplate对象
|
* @return
|
*/
|
@Bean //SpringCloud内部服务质检使用服务名调用
|
@LoadBalanced
|
public RestTemplate internalRestTemplate() {
|
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
|
connectionManager.setDefaultSocketConfig(SocketConfig.custom().setTcpNoDelay(true).build());
|
connectionManager.setDefaultMaxPerRoute(100);//最大并发连接
|
connectionManager.setMaxTotal(200); // 总的最大连接数
|
CloseableHttpClient httpClient = HttpClientBuilder.create().setConnectionManager(connectionManager).build();
|
HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);
|
httpRequestFactory.setConnectionRequestTimeout(30 * 1000);
|
httpRequestFactory.setConnectTimeout(30 * 3000);
|
httpRequestFactory.setReadTimeout(30 * 3000);
|
RestTemplate restTemplate = new RestTemplate(httpRequestFactory);
|
restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
|
return restTemplate;
|
}
|
|
@Bean //通过ip地址调用
|
public RestTemplate restTemplate() {
|
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
|
connectionManager.setDefaultSocketConfig(SocketConfig.custom().setTcpNoDelay(true).build());
|
connectionManager.setDefaultMaxPerRoute(100);//最大并发连接
|
connectionManager.setMaxTotal(200); // 总的最大连接数
|
CloseableHttpClient httpClient = HttpClientBuilder.create().setConnectionManager(connectionManager).build();
|
HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);
|
httpRequestFactory.setConnectionRequestTimeout(30 * 1000);
|
httpRequestFactory.setConnectTimeout(30 * 3000);
|
httpRequestFactory.setReadTimeout(30 * 3000);
|
RestTemplate restTemplate = new RestTemplate(httpRequestFactory);
|
restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
|
return restTemplate;
|
}
|
}
|