HttpClientConfig.java 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package com.tzld.piaoquan.tencentad.config;
  2. import org.apache.http.client.config.RequestConfig;
  3. import org.apache.http.impl.client.CloseableHttpClient;
  4. import org.apache.http.impl.client.DefaultHttpRequestRetryHandler;
  5. import org.apache.http.impl.client.HttpClientBuilder;
  6. import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
  7. import org.springframework.context.annotation.Bean;
  8. import org.springframework.context.annotation.Configuration;
  9. @Configuration
  10. public class HttpClientConfig {
  11. /**
  12. * 链接建立的超时时间 ms
  13. */
  14. private static final int CONNECTION_TIMEOUT = 3000;
  15. /**
  16. * 响应超时时间 ms
  17. */
  18. private static final int SOCKET_TIMEOUT = 20000;
  19. /**
  20. * 每个路由的最大连接数
  21. */
  22. private static final int MAX_PER_ROUTE = 20;
  23. /**
  24. * 最大连接数
  25. */
  26. private static final int MAX_TOTAL = 100;
  27. /**
  28. * 重试次数,默认0
  29. */
  30. private static final int RETRY_COUNT = 3;
  31. /**
  32. * 从connection pool中获得一个connection的超时时间 ms
  33. */
  34. private static final int CONNECTION_WAIT_TIMEOUT = 2000;
  35. @Bean
  36. public CloseableHttpClient httpClient() {
  37. RequestConfig requestConfig = RequestConfig.custom()
  38. .setConnectTimeout(CONNECTION_TIMEOUT)
  39. .setSocketTimeout(SOCKET_TIMEOUT)
  40. .setConnectionRequestTimeout(CONNECTION_WAIT_TIMEOUT)
  41. .build();
  42. PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
  43. connectionManager.setMaxTotal(MAX_TOTAL); // 设置最大连接数
  44. connectionManager.setDefaultMaxPerRoute(MAX_PER_ROUTE); // 每个路由的最大连接数
  45. return HttpClientBuilder.create()
  46. .setDefaultRequestConfig(requestConfig)
  47. .setConnectionManager(connectionManager)
  48. .setRetryHandler(new DefaultHttpRequestRetryHandler(RETRY_COUNT, false))
  49. .build();
  50. }
  51. }