org.apache.http.impl.client

## Class FutureRequestExecutionService

- java.lang.Object
- - org.apache.http.impl.client.FutureRequestExecutionService

- All Implemented Interfaces:
    Closeable, AutoCloseable

      @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

    Constructors
    Constructor and Description
    `FutureRequestExecutionService(HttpClient httpclient, ExecutorService executorService)` Create a new FutureRequestExecutionService.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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`
      Specified by:
        `close` in interface `AutoCloseable`
      Throws:
        `IOException`

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