org.apache.http.impl.client
Class FutureRequestExecutionService

java.lang.Object
  extended by org.apache.http.impl.client.FutureRequestExecutionService
All Implemented Interfaces:
Closeable

@Contract(threading=SAFE)
public class FutureRequestExecutionService
extends Object
implements Closeable

HttpAsyncClientWithFuture wraps calls to execute with a HttpRequestFutureTask and schedules them using the provided executor service. Scheduled calls may be cancelled.


Constructor Summary
FutureRequestExecutionService(HttpClient httpclient, ExecutorService executorService)
          Create a new FutureRequestExecutionService.
 
Method Summary
 void close()
           
<T> HttpRequestFutureTask<T>
execute(HttpUriRequest request, org.apache.http.protocol.HttpContext context, ResponseHandler<T> responseHandler)
          Schedule a request for execution.
<T> HttpRequestFutureTask<T>
execute(HttpUriRequest request, org.apache.http.protocol.HttpContext context, ResponseHandler<T> responseHandler, org.apache.http.concurrent.FutureCallback<T> callback)
          Schedule a request for execution.
 FutureRequestExecutionMetrics metrics()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FutureRequestExecutionService

public FutureRequestExecutionService(HttpClient httpclient,
                                     ExecutorService executorService)
Create a new FutureRequestExecutionService.

Parameters:
httpclient - you should tune your httpclient instance to match your needs. You should align the max number of connections in the pool and the number of threads in the executor; it doesn't make sense to have more threads than connections and if you have less connections than threads, the threads will just end up blocking on getting a connection from the pool.
executorService - any executorService will do here. E.g. Executors.newFixedThreadPool(int)
Method Detail

execute

public <T> HttpRequestFutureTask<T> execute(HttpUriRequest request,
                                            org.apache.http.protocol.HttpContext context,
                                            ResponseHandler<T> responseHandler)
Schedule a request for execution.

Type Parameters:
T -
Parameters:
request - request to execute
responseHandler - handler that will process the response.
Returns:
HttpAsyncClientFutureTask for the scheduled request.

execute

public <T> HttpRequestFutureTask<T> execute(HttpUriRequest request,
                                            org.apache.http.protocol.HttpContext context,
                                            ResponseHandler<T> responseHandler,
                                            org.apache.http.concurrent.FutureCallback<T> callback)
Schedule a request for execution.

Type Parameters:
T -
Parameters:
request - request to execute
context - optional context; use null if not needed.
responseHandler - handler that will process the response.
callback - callback handler that will be called when the request is scheduled, started, completed, failed, or cancelled.
Returns:
HttpAsyncClientFutureTask for the scheduled request.

metrics

public FutureRequestExecutionMetrics metrics()
Returns:
metrics gathered for this instance.
See Also:
FutureRequestExecutionMetrics

close

public void close()
           throws IOException
Specified by:
close in interface Closeable
Throws:
IOException


Copyright © 1999–2019 The Apache Software Foundation. All rights reserved.