以非同步方式使用 DynamoDB 增強型用戶端 API - AWS SDK for Java 2.x

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

以非同步方式使用 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. 傳回分頁結果清單的方法會傳回相同方法的同步傳回 SdkIterableSdkPublisher而非同步DynamoDbEnhanceClient傳回的結果。然後,您的應用程式可以訂閱該發行者的處理常式,以非同步方式處理結果,而不必封鎖。

    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()法一節中的範例