Class SdkAdvancedAsyncClientOption<T>
- Type Parameters:
T
- The type of value associated with the option.
ClientAsyncConfiguration.Builder.advancedOption(SdkAdvancedAsyncClientOption, Object)
.
These options are usually not required outside of testing or advanced libraries, so most users should not need to configure them.
-
Field Summary
Modifier and TypeFieldDescriptionstatic final SdkAdvancedAsyncClientOption
<Executor> Configure theExecutor
that should be used to complete theCompletableFuture
that is returned by the async service client. -
Method Summary
Methods inherited from class software.amazon.awssdk.utils.AttributeMap.Key
convertValue, toString
-
Field Details
-
FUTURE_COMPLETION_EXECUTOR
Configure theExecutor
that should be used to complete theCompletableFuture
that is returned by the async service client. By default, this is a dedicated, per-clientThreadPoolExecutor
that is managed by the SDK.The configured
Executor
will be invoked by the async HTTP client's I/O threads (e.g., EventLoops), which must be reserved for non-blocking behavior. Blocking an I/O thread can cause severe performance degradation, including across multiple clients, as clients are configured, by default, to share a single I/O thread pool (e.g., EventLoopGroup).You should typically only want to customize the future-completion
Executor
for a few possible reasons:- You want more fine-grained control over the
ThreadPoolExecutor
used, such as configuring the pool size or sharing a single pool between multiple clients. - You want to add instrumentation (i.e., metrics) around how the
Executor
is used.
We strongly discourage using
Runnable::run
, which executes the future-completion directly from within the I/O thread because it may block the I/O thread and cause deadlock, especially if you are sending another SDK request in theCompletableFuture
chain since the SDK may perform blocking calls in some cases. - You want more fine-grained control over the
-