本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
以非同步方式使用 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
, SdkPublisher
而非同步 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()法一節中的範例。