package com.stylefeng.guns; import com.stylefeng.guns.modular.system.util.GDFalconUtil; import org.apache.http.client.HttpClient; import org.apache.http.config.SocketConfig; 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.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; 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.scheduling.annotation.EnableScheduling; import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.web.client.RestTemplate; import java.nio.charset.StandardCharsets; /** * SpringBoot方式启动类 * * @author stylefeng * @Date 2017/5/21 12:06 */ @EnableEurekaClient//注册为服务提供者 @SpringBootApplication @EnableScheduling//开启定时任务 @EnableTransactionManagement//启动事务功能 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!"); // GDFalconUtil gdFalconUtil = new GDFalconUtil(); // gdFalconUtil.init();//初始化猎鹰服务 } @Bean //SpringCloud内部服务质检使用服务名调用 @LoadBalanced public RestTemplate internalRestTemplate() { PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(); connectionManager.setDefaultSocketConfig(SocketConfig.custom().setTcpNoDelay(true).build()); connectionManager.setDefaultMaxPerRoute(100);//最大并发连接 connectionManager.setMaxTotal(200); // 总的最大连接数 HttpClient 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; } /** * 向Spring容器中定义RestTemplate对象 * @return */ @Bean //必须new 一个RestTemplate并放入spring容器当中,否则启动时报错 public RestTemplate restTemplate() { PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(); connectionManager.setDefaultSocketConfig(SocketConfig.custom().setTcpNoDelay(true).build()); connectionManager.setDefaultMaxPerRoute(100);//最大并发连接 connectionManager.setMaxTotal(200); // 总的最大连接数 HttpClient 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; } }