Class FutureRequestExecutionService

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

    @Contract(threading=SAFE_CONDITIONAL)
    public class FutureRequestExecutionService
    extends java.lang.Object
    implements java.io.Closeable
    This class schedules message execution execution and processing as FutureTasks with the provided ExecutorService.
    • 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
      void close()  
      <T> java.util.concurrent.FutureTask<T> execute​(org.apache.hc.core5.http.ClassicHttpRequest request, org.apache.hc.core5.http.protocol.HttpContext context, org.apache.hc.core5.http.io.HttpClientResponseHandler<T> HttpClientResponseHandler)
      Schedule a request for execution.
      <T> java.util.concurrent.FutureTask<T> execute​(org.apache.hc.core5.http.ClassicHttpRequest request, org.apache.hc.core5.http.protocol.HttpContext context, org.apache.hc.core5.http.io.HttpClientResponseHandler<T> HttpClientResponseHandler, org.apache.hc.core5.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
    • Field Detail

      • executorService

        private final java.util.concurrent.ExecutorService executorService
      • closed

        private final java.util.concurrent.atomic.AtomicBoolean closed
    • 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> java.util.concurrent.FutureTask<T> execute​(org.apache.hc.core5.http.ClassicHttpRequest request,
                                                              org.apache.hc.core5.http.protocol.HttpContext context,
                                                              org.apache.hc.core5.http.io.HttpClientResponseHandler<T> HttpClientResponseHandler)
        Schedule a request for execution.
        Type Parameters:
        T -
        Parameters:
        request - request to execute
        HttpClientResponseHandler - handler that will process the response.
        Returns:
        HttpAsyncClientFutureTask for the scheduled request.
      • execute

        public <T> java.util.concurrent.FutureTask<T> execute​(org.apache.hc.core5.http.ClassicHttpRequest request,
                                                              org.apache.hc.core5.http.protocol.HttpContext context,
                                                              org.apache.hc.core5.http.io.HttpClientResponseHandler<T> HttpClientResponseHandler,
                                                              org.apache.hc.core5.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.
        HttpClientResponseHandler - 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.
      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Throws:
        java.io.IOException