asyncConfiguration SdkAdvancedAsyncClientOption.FUTURE_COMPLETION_EXECUTOR
的用途是什么?
在什么情况下我们应该使用它?
FUTURE_COMPLETION_EXECUTOR
上的java doc 中,我看到:Configure the executor that should be used to complete the CompletableFuture that is returned by the service clients.
我认为后续对CompletableFuture
的异步结果调用将在传入的FUTURE_COMPLETION_EXECUTOR
的执行程序上执行,但这是不是。
ClientAsyncConfiguration.Builder asyncConfig = ClientAsyncConfiguration.builder()
.advancedOption(SdkAdvancedAsyncClientOption.FUTURE_COMPLETION_EXECUTOR, customExecutor);
SnsAsyncClient.builder()
.asyncConfiguration(asyncConfig.build())
.build();
异步请求示例:
snsAsyncClient.publish(publishRequest).thenApplyAsync(..);
答案 0 :(得分:0)
AWS SDK异步请求返回CompletableFuture
。默认情况下,将在诸如thenApply(..)
之类的线程上执行对返回的whenComplete(..)
实例的CompletableFuture
和sdk-async-response-0-X
的调用。
异步配置SdkAdvancedAsyncClientOption.FUTURE_COMPLETION_EXECUTOR
的想法是提供线程池执行程序,该执行程序将用于CompletableFuture
上的后续调用,例如thenApply(..)
和whenComplete(..)
。由于执行了thenApplyAsync
,因此该执行程序将不会应用于whenCompleteAsync
和CompletableFuture
之类的方法(如果该执行程序未传递到thenApplyAsync(..)
中,则默认情况下将使用它{{1} },或者我们可以将自定义执行程序作为第二个方法参数传递。
ForkJoinPool.commonPool()
snsAsyncClient.publish(publishRequest)
.thenApply(..)
.whenComplete(..);
和thenApply
中的代码将在whenComplete
中配置的执行程序上进行处理。