웨이터를 버전 1에서 버전 2로 변경 - AWS SDK for Java 2.x

웨이터를 버전 1에서 버전 2로 변경

이 주제에서는 버전 1(v1)에서 버전 2(v2)로 변환 시 웨이터 기능의 변경 사항을 자세히 설명합니다.

다음 표에서는 DynamoDB 웨이터의 차이점을 구체적으로 보여줍니다. 다른 서비스의 웨이터는 동일한 패턴을 따릅니다.

높은 수준의 변경 사항

웨이터 클래스는 서비스와 동일한 Maven 아티팩트에 있습니다.

변경 사항 v1 v2

Maven 종속성

<dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-bom</artifactId> <version>1.12.6801</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>dynamodb</artifactId> </dependency> </dependencies>
<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.27.102</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>dynamodb</artifactId> </dependency> </dependencies>
패키지 이름 com.amazonaws.services.dynamodbv2.waiters software.amazon.awssdk.services.dynamodb.waiters
클래스 이름

AmazonDynamoDBWaiters

1 최신 버전. 2 최신 버전.

API 변경 사항

변경 사항 v1 v2
웨이터 만들기
AmazonDynamoDB client = AmazonDynamoDBClientBuilder .standard().build(); AmazonDynamoDBWaiters waiter = client.waiters();
동기식:
DynamoDbClient client = DynamoDbClient.create(); DynamoDbWaiter waiter = client.waiter();

비동기식:

DynamoDbAsyncClient asyncClient = DynamoDbAsyncClient.create(); DynamoDbAsyncWaiter waiter = asyncClient.waiter();
테이블이 존재할 때까지 대기 동기식:
waiter.tableExists() .run(new WaiterParameters<>( new DescribeTableRequest(tableName)));

비동기식:

waiter.tableExists() .runAsync(new WaiterParameters() .withRequest(new DescribeTableRequest(tableName)), new WaiterHandler() { @Override public void onWaitSuccess( AmazonWebServiceRequest amazonWebServiceRequest) { System.out.println("Table creation succeeded"); } @Override public void onWaitFailure(Exception e) { e.printStackTrace(); } }).get();

동기식:

WaiterResponse<DescribeTableResponse> waiterResponse = waiter.waitUntilTableExists( r -> r.tableName("myTable")); waiterResponse.matched().response() .ifPresent(System.out::println);

비동기식:

waiter.waitUntilTableExists(r -> r.tableName(tableName)) .whenComplete((r, t) -> { if (t != null) { t.printStackTrace(); } else { System.out.println( "Table creation succeeded"); } }).join();

구성 변경

변경 사항 v1 v2
폴링 전략(최대 시도 횟수 및 고정 지연)
MaxAttemptsRetryStrategy maxAttemptsRetryStrategy = new MaxAttemptsRetryStrategy(10); FixedDelayStrategy fixedDelayStrategy = new FixedDelayStrategy(3); PollingStrategy pollingStrategy = new PollingStrategy(maxAttemptsRetryStrategy, fixedDelayStrategy); waiter.tableExists().run( new WaiterParameters<>( new DescribeTableRequest(tableName)), pollingStrategy);
FixedDelayBackoffStrategy fixedDelayBackoffStrategy = FixedDelayBackoffStrategy .create(Duration.ofSeconds(3)); waiter.waitUntilTableExists(r -> r.tableName(tableName), c -> c.maxAttempts(10) .backoffStrategy(fixedDelayBackoffStrategy));