Package org.apache.http.impl.client
Class FutureRequestExecutionService
- java.lang.Object
 - 
- org.apache.http.impl.client.FutureRequestExecutionService
 
 
- 
- All Implemented Interfaces:
 java.io.Closeable,java.lang.AutoCloseable
@Contract(threading=SAFE) public class FutureRequestExecutionService extends java.lang.Object implements java.io.Closeable
HttpAsyncClientWithFuture wraps calls to execute with aHttpRequestFutureTaskand schedules them using the provided executor service. Scheduled calls may be cancelled. 
- 
- 
Constructor Summary
Constructors Constructor Description FutureRequestExecutionService(HttpClient httpclient, java.util.concurrent.ExecutorService executorService)Create a new FutureRequestExecutionService. 
- 
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()<T> HttpRequestFutureTask<T>execute(HttpUriRequest request, HttpContext context, ResponseHandler<T> responseHandler)Schedule a request for execution.<T> HttpRequestFutureTask<T>execute(HttpUriRequest request, HttpContext context, ResponseHandler<T> responseHandler, FutureCallback<T> callback)Schedule a request for execution.FutureRequestExecutionMetricsmetrics() 
 - 
 
- 
- 
Constructor Detail
- 
FutureRequestExecutionService
public FutureRequestExecutionService(HttpClient httpclient, java.util.concurrent.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, HttpContext context, ResponseHandler<T> responseHandler)
Schedule a request for execution.- Type Parameters:
 T-- Parameters:
 request- request to executeresponseHandler- handler that will process the response.- Returns:
 - HttpAsyncClientFutureTask for the scheduled request.
 
 
- 
execute
public <T> HttpRequestFutureTask<T> execute(HttpUriRequest request, HttpContext context, ResponseHandler<T> responseHandler, FutureCallback<T> callback)
Schedule a request for execution.- Type Parameters:
 T-- Parameters:
 request- request to executecontext- 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 java.io.IOException- Specified by:
 closein interfacejava.lang.AutoCloseable- Specified by:
 closein interfacejava.io.Closeable- Throws:
 java.io.IOException
 
 - 
 
 -