@Test(timeOut = 10 * 60 * 1000) public void rc10kProblem() throws IOException, ExecutionException, InterruptedException { try (AsyncHttpClient ahc = asyncHttpClient(config().setMaxConnectionsPerHost(C1K).setKeepAlive(true))) { List<Future<Integer>> resps = new ArrayList<>(C1K); int i = 0; while (i < C1K) { resps.add(ahc.prepareGet(String.format("http://localhost:%d/%d", ports[i % SRV_COUNT], i)).execute(new MyAsyncHandler(i++))); } i = 0; for (Future<Integer> fResp : resps) { Integer resp = fResp.get(); assertNotNull(resp); assertEquals(resp.intValue(), i++); } } }
.setKeepAlive(false) .setMaxConnections(2) .setMaxConnectionsPerHost(1) .build();
.setKeepAlive(true) .setMaxConnections(1) .setMaxConnectionsPerHost(1) .build();
config.setMaxConnectionsPerHost(poolConfiguration.getMaxConnectionsPerHost()); config.setPooledConnectionIdleTimeout(poolConfiguration.getIdleConnectionInPoolTimeout());
.setMaxConnections(maxConnections).setMaxConnectionsPerHost(maxConnectionsPerHost) .setConnectTimeout(connectTimeout).setReadTimeout(readTimeout) .setPooledConnectionIdleTimeout(pooledConnectionIdleTimeout).setRequestTimeout(requestTimeout)
.setMaxConnections(maxConnections).setMaxConnectionsPerHost(maxConnectionsPerHost) .setConnectTimeout(connectTimeout).setReadTimeout(readTimeout) .setPooledConnectionIdleTimeout(pooledConnectionIdleTimeout).setRequestTimeout(requestTimeout)
config.setFollowRedirect(false); config.setConnectionTtl((int) (period * 2)); // 2 times the period so it gives a chance under heavy load to reuse connections config.setMaxConnectionsPerHost(maxConnections + 10); config.setMaxConnections(maxConnections + 10); config.setIoThreadsCount(nioThreads);
public TradeshiftClientConfiguration build() { asyncHttpClientConfig = getAsyncHttpClientConfig() .orElseGet(() -> new DefaultAsyncHttpClientConfig.Builder() .setConnectTimeout(CONNECT_TIMEOUT_IN_MS) .setRequestTimeout(REQUEST_TIMEOUT_IN_MS) .setUserAgent(defaultUserAgent()) .setMaxConnectionsPerHost(MAX_CONNECTIONS_PER_HOST) .addRequestFilter( new RateLimitedThrottleRequestFilter(MAX_CONNECTIONS_PER_HOST, MAX_REQUEST_PER_SECOND, MAX_WAIT_FOR_CONNECTION)) .build()); asyncHttpClient = getAsyncHttpClient() .orElseGet(() -> new DefaultAsyncHttpClient(asyncHttpClientConfig)); httpAuthenticationStrategy = httpAuthenticationStrategy() .orElseGet(XTradeshiftHeadersHttpAuthentication::new); responseErrorReader = responseErrorReaderStrategy().orElseGet(MultiTypeResponseErrorReader::new); return new DefaultTradeshiftClientConfiguration(this); }
.setKeepAlive(false) .setMaxConnections(1) .setMaxConnectionsPerHost(1) .build();
@Test(groups = "online", invocationCount = 4) public void multipleSslRequestsWithDelayAndKeepAlive() throws Exception { AsyncHttpClientConfig config = config() .setFollowRedirect(true) .setKeepAlive(true) .setConnectTimeout(10000) .setPooledConnectionIdleTimeout(60000) .setRequestTimeout(10000) .setMaxConnectionsPerHost(-1) .setMaxConnections(-1) .build(); try (AsyncHttpClient client = asyncHttpClient(config)) { final BoundRequestBuilder builder = client.prepareGet(GOOGLE_HTTPS_URL); final Response response1 = builder.execute().get(); Thread.sleep(4000); final Response response2 = builder.execute().get(); assertNotNull(response1); assertNotNull(response2); } } }
/** * Tests that after a redirect the final url in the response reflect the redirect */ @Test public void testGetRedirectFinalUrl() throws Exception { AsyncHttpClientConfig config = config() .setKeepAlive(true) .setMaxConnectionsPerHost(1) .setMaxConnections(1) .setConnectTimeout(1000) .setRequestTimeout(1000) .setFollowRedirect(true) .build(); try (AsyncHttpClient c = asyncHttpClient(config)) { ListenableFuture<Response> response = c.executeRequest(get(servletEndpointRedirectUrl)); Response res = response.get(); assertNotNull(res.getResponseBody()); assertEquals(res.getUri().toString(), BASE_URL + "/overthere"); } }
@Test public void nonPoolableConnectionReleaseSemaphoresTest() throws Throwable { RequestBuilder request = get(getTargetUrl()).setHeader("Connection", "close"); try (AsyncHttpClient client = asyncHttpClient(config().setMaxConnections(6).setMaxConnectionsPerHost(3))) { client.executeRequest(request).get(); Thread.sleep(1000); client.executeRequest(request).get(); Thread.sleep(1000); client.executeRequest(request).get(); Thread.sleep(1000); client.executeRequest(request).get(); } }
public Builder setMaxConnectionsPerHost(int defaultMaxConnectionsPerHost) { configBuilder.setMaxConnectionsPerHost(defaultMaxConnectionsPerHost); return this; }
private DefaultAsyncHttpClientConfig.Builder httpClientBuilder() { return config() .setKeepAlive(true) .setMaxConnectionsPerHost(1) .setMaxConnections(1) .setConnectTimeout(1000) .setRequestTimeout(1000) .setFollowRedirect(true); }