本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
异步使用 DynamoDB 增强型客户端 API
如果您的应用程序需要对 DynamoDB 进行非阻塞异步调用,则可以使用 DynamoDbEnhancedAsyncClient
-
构建时
DynamoDbEnhancedAsyncClient
,必须提供标准客户端的异步版本DynamoDbAsyncClient
,如以下代码段所示。DynamoDbEnhancedAsyncClient enhancedClient = DynamoDbEnhancedAsyncClient.builder() .dynamoDbClient(dynamoDbAsyncClient) .build();
-
返回单个数据对象的方法会返回结果的
CompletableFuture
,而不仅仅是结果。然后,您的应用程序可以执行其他工作,而不必因结果阻塞。以下代码段显示了异步getItem()
方法。CompletableFuture<Customer> result = customerDynamoDbTable.getItem(customer); // Perform other work here. return result.join(); // Now block and wait for the result.
-
返回分页结果列表的方法会返回
SdkIterable
,而不是同步 DynamoDbEnhanceClient
会为相同方法返回的SdkPublisher
。然后,您的应用程序可以向该发布者订阅处理程序,以异步方式处理结果,而无需阻塞。 PagePublisher<Customer> results = customerDynamoDbTable.query(r -> r.queryConditional(keyEqualTo(k -> k.partitionValue("Smith")))); results.subscribe(myCustomerResultsProcessor); // Perform other work and let the processor handle the results asynchronously.
有关更完整的
SdkPublisher API
使用示例,请参阅本指南中讨论异步scan()
方法的部分中的示例。