Class FutureRequestExecutionService
java.lang.Object
org.apache.hc.client5.http.impl.classic.FutureRequestExecutionService
- All Implemented Interfaces:
Closeable
,AutoCloseable
@Contract(threading=SAFE_CONDITIONAL)
public class FutureRequestExecutionService
extends Object
implements Closeable
This class schedules message execution execution and processing
as
FutureTask
s with the provided ExecutorService
.-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final AtomicBoolean
private final ExecutorService
private final HttpClient
private final FutureRequestExecutionMetrics
-
Constructor Summary
ConstructorsConstructorDescriptionFutureRequestExecutionService
(HttpClient httpclient, ExecutorService executorService) Create a new FutureRequestExecutionService. -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
<T> 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> 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.metrics()
-
Field Details
-
httpclient
-
executorService
-
metrics
-
closed
-
-
Constructor Details
-
FutureRequestExecutionService
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 Details
-
execute
public <T> 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 executeHttpClientResponseHandler
- handler that will process the response.- Returns:
- HttpAsyncClientFutureTask for the scheduled request.
-
execute
public <T> 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 executecontext
- 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.
-
metrics
- Returns:
- metrics gathered for this instance.
- See Also:
-
close
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Throws:
IOException
-