기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
버전 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));
|