

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 비동기식으로 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. 단일 데이터 객체를 반환하는 메서드는 결과만 반환하는 대신 결과의 `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)를 참조하세요.