DynamoDB 拡張クライアント API を非同期的に使用する - AWS SDK for Java 2.x

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

DynamoDB 拡張クライアント API を非同期的に使用する

アプリケーションで DynamoDB へのノンブロッキングの非同期呼び出しが必要な場合は、DynamoDbEnhancedAsyncClient を使用できます。同期実装と似ていますが、次の主な違いがあります。

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

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

    CompletableFuture<Customer> result = customerDynamoDbTable.getItem(customer); // Perform other work here. return result.join(); // Now block and wait for the result.
  3. ページ分割された結果リストを返すメソッドは、同期 DynamoDbEnhanceClient が同じメソッドで返す SdkIterable の代わりに、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() メソッドについて説明しているセクションのを参照してください。