异步使用 DynamoDB 增强型客户端 API - Amazon SDK for Java 2.x
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

异步使用 DynamoDB 增强型客户端 API

如果您的应用程序需要对 DynamoDB 进行非阻塞异步调用,则可以使用 DynamoDbEnhancedAsyncClient。它与同步实现类似,但有以下主要区别:

  1. 构建时 DynamoDbEnhancedAsyncClient,必须提供标准客户端的异步版本 DynamoDbAsyncClient,如以下代码段所示。

    DynamoDbEnhancedAsyncClient enhancedClient = DynamoDbEnhancedAsyncClient.builder() .dynamoDbClient(dynamoDbAsyncClient) .build();
  2. 返回单个数据对象的方法会返回结果的 CompletableFuture,而不仅仅是结果。然后,您的应用程序可以执行其他工作,而不必因结果阻塞。以下代码段显示了异步 getItem() 方法。

    CompletableFuture<Customer> result = customerDynamoDbTable.getItem(customer); // Perform other work here. return result.join(); // Now block and wait for the result.
  3. 返回分页结果列表的方法会返回 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() 方法的部分中的示例