protected HttpClientConnectionManager getConnectionManager() { HttpClientConnectionManager retval; Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create() .register("http", httpClientConfig.getPlainSocketFactory()) .register("https", httpClientConfig.getSslSocketFactory()) .build(); if (httpClientConfig.isMultiThreaded()) { log.info("Using multi thread/connection supporting pooling connection manager"); final PoolingHttpClientConnectionManager poolingConnMgr = new PoolingHttpClientConnectionManager(registry); final Integer maxTotal = httpClientConfig.getMaxTotalConnection(); if (maxTotal != null) { poolingConnMgr.setMaxTotal(maxTotal); } final Integer defaultMaxPerRoute = httpClientConfig.getDefaultMaxTotalConnectionPerRoute(); if (defaultMaxPerRoute != null) { poolingConnMgr.setDefaultMaxPerRoute(defaultMaxPerRoute); } final Map<HttpRoute, Integer> maxPerRoute = httpClientConfig.getMaxTotalConnectionPerRoute(); for (Map.Entry<HttpRoute, Integer> entry : maxPerRoute.entrySet()) { poolingConnMgr.setMaxPerRoute(entry.getKey(), entry.getValue()); } retval = poolingConnMgr; } else { log.info("Using single thread/connection supporting basic connection manager"); retval = new BasicHttpClientConnectionManager(registry); } return retval; }
cm.setMaxPerRoute(new HttpRoute(new HttpHost("twitter.com", 80)), 50); cm.setMaxPerRoute(new HttpRoute(new HttpHost("twitter.com", 443)), 50);
cm.setMaxPerRoute(entry.getKey(), entry.getValue());
/** * @param host the host * @param port the port number * @param max number connections */ public static void setHostLimit(final String host, final int port, final int max) { final HttpHost hostPort = new HttpHost(host, port); connManager.setMaxPerRoute(new HttpRoute(hostPort), max); }
// Increase max total connection to 200 and increase default max connection per route to 20. // Configure total max or per route limits for persistent connections // that can be kept in the pool or leased by the connection manager. PoolingHttpClientConnectionManager oConnectionMgr = new PoolingHttpClientConnectionManager(); oConnectionMgr.setMaxTotal(200); oConnectionMgr.setDefaultMaxPerRoute(20); oConnectionMgr.setMaxPerRoute(new HttpRoute(new HttpHost("192.168.20.120", 8080)), 20); RequestConfig defaultRequestConfig = RequestConfig.custom() .setSocketTimeout(5000) .setConnectTimeout(5000) .setConnectionRequestTimeout(5000) .setStaleConnectionCheckEnabled(true) .build(); //HttpClient client = HttpClientBuilder.create().setDefaultRequestConfig(defaultRequestConfig).build(); CloseableHttpClient oClientCloseable = HttpClientBuilder.create() .setConnectionManager(oConnectionMgr) .setDefaultRequestConfig(defaultRequestConfig) .build();
private CloseableHttpClient httpClient() throws Exception { PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(registry()); Map<String, Object> httpClientMap = (Map<String, Object>)configMap.get(REST_TEMPLATE); connectionManager.setMaxTotal((Integer)httpClientMap.get(MAX_CONNECTION_TOTAL)); connectionManager.setDefaultMaxPerRoute((Integer) httpClientMap.get(MAX_CONNECTION_PER_ROUTE)); // Now handle all the specific route defined. Map<String, Object> routeMap = (Map<String, Object>)httpClientMap.get(ROUTES); Iterator<String> it = routeMap.keySet().iterator(); while (it.hasNext()) { String route = it.next(); Integer maxConnection = (Integer)routeMap.get(route); connectionManager.setMaxPerRoute(new HttpRoute(new HttpHost( route)), maxConnection); } RequestConfig config = RequestConfig.custom() .setConnectTimeout((Integer)httpClientMap.get(TIMEOUT_MILLISECONDS)) .build(); return HttpClientBuilder.create() .setConnectionManager(connectionManager) .setDefaultRequestConfig(config).build(); }
protected CloseableHttpClient getClient(int connCount, int connTimeout, int socketTimeout, int connectionReuseCount, String...endpoints) throws MalformedURLException { PoolingHttpClientConnectionManager connMgr = new PoolingHttpClientConnectionManager(); connMgr.setMaxTotal(connCount); for(String endpoint : endpoints) { URL url = new URL(endpoint); int port = url.getPort(); requireArgument(port != -1, "TSDB endpoint must include explicit port."); HttpHost host = new HttpHost(url.getHost(), url.getPort()); connMgr.setMaxPerRoute(new HttpRoute(host), connCount / endpoints.length); } RequestConfig reqConfig = RequestConfig.custom().setConnectionRequestTimeout(connTimeout).setConnectTimeout(connTimeout).setSocketTimeout( socketTimeout).build(); if(connectionReuseCount>0) { return HttpClients.custom().setConnectionManager(connMgr).setConnectionReuseStrategy(new TSDBReadConnectionReuseStrategy(connectionReuseCount)).setDefaultRequestConfig(reqConfig).build(); }else { return HttpClients.custom().setConnectionManager(connMgr).setDefaultRequestConfig(reqConfig).build(); } }
/** * For each route we explicitly set max Connections. * @param host * @param port * @param maxConnsPerRout */ public DruidNodeAccessor(String host, int port, int maxConnsPerRout) { proxyInit(); if (host != null) { HttpHost targetHost = new HttpHost(host, port); pool.setMaxPerRoute(new HttpRoute(targetHost), maxConnsPerRout); } }
protected CloseableHttpClient getClient(int connCount, int connTimeout, int socketTimeout, int connectionReuseCount, String...endpoints) throws MalformedURLException { PoolingHttpClientConnectionManager connMgr = new PoolingHttpClientConnectionManager(); connMgr.setMaxTotal(connCount); for(String endpoint : endpoints) { URL url = new URL(endpoint); int port = url.getPort(); requireArgument(port != -1, "TSDB endpoint must include explicit port."); HttpHost host = new HttpHost(url.getHost(), url.getPort()); connMgr.setMaxPerRoute(new HttpRoute(host), connCount / endpoints.length); } RequestConfig reqConfig = RequestConfig.custom().setConnectionRequestTimeout(connTimeout).setConnectTimeout(connTimeout).setSocketTimeout( socketTimeout).build(); if(connectionReuseCount>0) { return HttpClients.custom().setConnectionManager(connMgr).setConnectionReuseStrategy(new TSDBReadConnectionReuseStrategy(connectionReuseCount)).setDefaultRequestConfig(reqConfig).build(); }else { return HttpClients.custom().setConnectionManager(connMgr).setDefaultRequestConfig(reqConfig).build(); } }
/** * For each route we explicitly set max Connections. * @param host * @param port * @param maxConnsPerRout */ public DruidNodeAccessor(String host, int port, int maxConnsPerRout) { proxyInit(); if (host != null) { HttpHost targetHost = new HttpHost(host, port); pool.setMaxPerRoute(new HttpRoute(targetHost), maxConnsPerRout); } }
@Override protected void prepareRequest(HttpHost target, HttpRequest request) throws ClientProtocolException { super.prepareRequest(target, request); String key = target.toString(); synchronized (routedHosts) { if (!routedHosts.contains(key)) { String group = ".*"; for (String searchGroup : groupLimits.keySet()) { if (key.matches(searchGroup) && searchGroup.length() > group.length()) { group = searchGroup; } } int maxRequests = groupLimits.get(group); LOG.debug("IO download host: {}; rule: {}, maxRequests: {}", key, group, maxRequests); routedHosts.add(key); HttpRoute httpRoute = new HttpRoute(target); connManager.setMaxPerRoute(httpRoute, maxRequests); } } }
/** * Sets the maximum number of connections per host for the underlying HttpClient. The maximum number of connections * per host can be set in a form accepted by the {@code java.util.Properties} class, like as follows: * <pre> * https://esb.openhubframework.org/esb/=1 * http://esb.openhubframework.org:8080/esb/=7 * http://esb.openhubframework.org/esb/=10 * </pre> * <p> * The host can be specified as a URI (with scheme and port). * * @param maxConnectionsPerHost a properties object specifying the maximum number of connection * @see PoolingHttpClientConnectionManager#setMaxPerRoute(org.apache.http.conn.routing.HttpRoute, int) */ @Override public void setMaxConnectionsPerHost(Map<String, String> maxConnectionsPerHost) throws URISyntaxException { for (Map.Entry<String, String> entry : maxConnectionsPerHost.entrySet()) { URI uri = new URI(entry.getKey()); HttpHost host = new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()); HttpRoute route = new HttpRoute(host); PoolingHttpClientConnectionManager connectionManager = (PoolingHttpClientConnectionManager) getConnPoolControl(); int max = Integer.parseInt(entry.getValue()); connectionManager.setMaxPerRoute(route, max); BasicScheme basicAuth = new BasicScheme(); authCache.get().put(host, basicAuth); } }
/** * Creates custom Http Client connection pool to be used by Http Client * * @return {@link PoolingHttpClientConnectionManager} */ private PoolingHttpClientConnectionManager createConnectionMgr() { PoolingHttpClientConnectionManager connectionMgr; // prepare SSLContext SSLContext sslContext = buildSslContext(); ConnectionSocketFactory plainsf = PlainConnectionSocketFactory.getSocketFactory(); // we allow to disable host name verification against CA certificate, // notice: in general this is insecure and should be avoided in production, // (this type of configuration is useful for development purposes) boolean noHostVerification = false; LayeredConnectionSocketFactory sslsf = new SSLConnectionSocketFactory( sslContext, noHostVerification ? NoopHostnameVerifier.INSTANCE : new DefaultHostnameVerifier() ); Registry<ConnectionSocketFactory> r = RegistryBuilder.<ConnectionSocketFactory>create() .register("http", plainsf) .register("https", sslsf) .build(); connectionMgr = new PoolingHttpClientConnectionManager(r, null, null, null, connectionPoolTimeToLive, TimeUnit.SECONDS); connectionMgr.setMaxTotal(maxConnectionsTotal); connectionMgr.setDefaultMaxPerRoute(maxConnectionsPerRoute); HttpHost localhost = new HttpHost("localhost", 80); connectionMgr.setMaxPerRoute(new HttpRoute(localhost), maxConnectionsPerRoute); return connectionMgr; }
/** * Creates custom Http Client connection pool to be used by Http Client * * @return {@link PoolingHttpClientConnectionManager} */ private PoolingHttpClientConnectionManager createConnectionMgr() { PoolingHttpClientConnectionManager connectionMgr; // prepare SSLContext SSLContext sslContext = buildSslContext(); ConnectionSocketFactory plainsf = PlainConnectionSocketFactory.getSocketFactory(); // we allow to disable host name verification against CA certificate, // notice: in general this is insecure and should be avoided in production, // (this type of configuration is useful for development purposes) boolean noHostVerification = false; LayeredConnectionSocketFactory sslsf = new SSLConnectionSocketFactory( sslContext, noHostVerification ? NoopHostnameVerifier.INSTANCE : new DefaultHostnameVerifier() ); Registry<ConnectionSocketFactory> r = RegistryBuilder.<ConnectionSocketFactory>create() .register("http", plainsf) .register("https", sslsf) .build(); connectionMgr = new PoolingHttpClientConnectionManager(r, null, null, null, connectionPoolTimeToLive, TimeUnit.SECONDS); connectionMgr.setMaxTotal(maxConnectionsTotal); connectionMgr.setDefaultMaxPerRoute(maxConnectionsPerRoute); HttpHost localhost = new HttpHost("localhost", 80); connectionMgr.setMaxPerRoute(new HttpRoute(localhost), maxConnectionsPerRoute); return connectionMgr; }
protected HttpClientConnectionManager getConnectionManager() { HttpClientConnectionManager retval; Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create() .register("http", httpClientConfig.getPlainSocketFactory()) .register("https", httpClientConfig.getSslSocketFactory()) .build(); if (httpClientConfig.isMultiThreaded()) { log.info("Using multi thread/connection supporting pooling connection manager"); final PoolingHttpClientConnectionManager poolingConnMgr = new PoolingHttpClientConnectionManager(registry); final Integer maxTotal = httpClientConfig.getMaxTotalConnection(); if (maxTotal != null) { poolingConnMgr.setMaxTotal(maxTotal); } final Integer defaultMaxPerRoute = httpClientConfig.getDefaultMaxTotalConnectionPerRoute(); if (defaultMaxPerRoute != null) { poolingConnMgr.setDefaultMaxPerRoute(defaultMaxPerRoute); } final Map<HttpRoute, Integer> maxPerRoute = httpClientConfig.getMaxTotalConnectionPerRoute(); for (Map.Entry<HttpRoute, Integer> entry : maxPerRoute.entrySet()) { poolingConnMgr.setMaxPerRoute(entry.getKey(), entry.getValue()); } retval = poolingConnMgr; } else { log.info("Using single thread/connection supporting basic connection manager"); retval = new BasicHttpClientConnectionManager(registry); } return retval; }
HttpHost httpHost = new HttpHost(hostname, port); _cm.setMaxPerRoute(new HttpRoute(httpHost), maxRoute);
connectionManager.setMaxPerRoute(httpRoute, MAX_CONNECTIONS_PER_ROUTE);
CM.setMaxPerRoute(yunpanRoute, 100);
connMgmr.setMaxPerRoute(httpRoute, MAX_CONNECTIONS_PER_ROUTE);
for (InetSocketAddress addr : config.getDefaultHttpRoutes().keySet()) { HttpRoute r = new HttpRoute(new HttpHost(addr.getHostName(), addr.getPort())); poolingmgr.setMaxPerRoute(r, config.getDefaultHttpRoutes().get(addr));