@Test public void loadThrottleTest() throws Exception { try (AsyncHttpClient c = asyncHttpClient(config().addRequestFilter(new ThrottleRequestFilter(10)))) { List<Future<Response>> futures = new ArrayList<>(); for (int i = 0; i < 200; i++) { futures.add(c.preparePost(getTargetUrl()).execute()); } for (Future<Response> f : futures) { Response r = f.get(); assertNotNull(f.get()); assertEquals(r.getStatusCode(), 200); } } }
@Test public void maxConnectionsText() throws Exception { try (AsyncHttpClient c = asyncHttpClient(config().addRequestFilter(new ThrottleRequestFilter(0, 1000)))) { c.preparePost(getTargetUrl()).execute().get(); fail("Should have timed out"); } catch (ExecutionException ex) { assertTrue(ex.getCause() instanceof FilterException); } }
@Test public void basicTest() throws Exception { try (AsyncHttpClient c = asyncHttpClient(config().addRequestFilter(new ThrottleRequestFilter(100)))) { Response response = c.preparePost(getTargetUrl()).execute().get(); assertNotNull(response); assertEquals(response.getStatusCode(), 200); } }
config.addRequestFilter(new RequestFilter() { @Override public <T> FilterContext<T> filter(final FilterContext<T> ctx) throws FilterException {
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); }
public WebMessenger(Function<Response, Res> responseFactory, EventLoopGroup eventLoopGroup) { DefaultAsyncHttpClientConfig.Builder configBuilder = new DefaultAsyncHttpClientConfig.Builder(); configBuilder.setKeepAlive(true); configBuilder.addRequestFilter(new ThrottleRequestFilter(40)); if (eventLoopGroup != null) { configBuilder.setEventLoopGroup(eventLoopGroup); } this.transport = new AsyncHttpTransport(configBuilder.build()); this.responseFactory = responseFactory; }