

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# DynamoDB 拡張クライアント API を非同期的に使用する
<a name="ddb-en-client-async"></a>

アプリケーションで DynamoDB へのノンブロッキングの非同期呼び出しが必要な場合は、[DynamoDbEnhancedAsyncClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/enhanced/dynamodb/DynamoDbEnhancedAsyncClient.html) を使用できます。同期実装と似ていますが、次の主な違いがあります。

1. `DynamoDbEnhancedAsyncClient` を構築するときは、次のスニペットに示すように、標準クライアントの非同期バージョン、`DynamoDbAsyncClient` を指定する必要があります。

   ```
    DynamoDbEnhancedAsyncClient enhancedClient = 
        DynamoDbEnhancedAsyncClient.builder()
                                   .dynamoDbClient(dynamoDbAsyncClient)
                                   .build();
   ```

1. 1 つのデータオブジェクトを返すメソッドは、結果だけではなく結果の `CompletableFuture` を返します。そうすることで、アプリケーションは結果をブロックせずに他の処理を行うことができます。次のスニペットは、非同期 `getItem()` メソッドを示しています。

   ```
   CompletableFuture<Customer> result = customerDynamoDbTable.getItem(customer);
   // Perform other work here.
   return result.join();   // Now block and wait for the result.
   ```

1. ページ分割された結果リストを返すメソッドは、同期 `DynamoDbEnhanceClient` が同じメソッドで返す [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/pagination/sync/SdkIterable.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/pagination/sync/SdkIterable.html) の代わりに、[https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/async/SdkPublisher.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/async/SdkPublisher.html) を返します。その後、アプリケーションはハンドラーをそのパブリッシャーにサブスクライブして、結果をブロックせずに非同期的に処理できます。

   ```
   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()` メソッドについて説明しているセクションの[例](ddb-en-client-use-multirecord.md#ddb-en-client-use-multirecord-scan-async)を参照してください。