適用於 Java 的 AWS SDK 2.x 中資源狀態的輪詢:等待程式 - AWS SDK for Java 2.x

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

適用於 Java 的 AWS SDK 2.x 中資源狀態的輪詢:等待程式

適用於 Java 的 AWS SDK 2.x 的等待程式公用程式可讓您在對 AWS 這些資源執行操作之前,先驗證資源是否處於指定的狀態。

等待程式是用來輪詢 AWS 資源的抽象,例如 DynamoDB 資料表或 Amazon S3 儲存貯體,直到達到所需的狀態 (或直到確定資源永遠不會達到所需的狀態)。您可以使用等待程式輪詢資源,並讓程式碼在資源準備就緒後繼續執行,而不是編寫邏輯來持續輪詢 AWS 可能很繁瑣且容易出錯的資源。

先決條件

您必須先完成設定 適用於 Java 的 AWS SDK 2.x 中的步驟 適用於 Java 的 AWS SDK,才能在專案中使用等待程式。

您也必須將專案相依性 (例如,在您的 pom.xmlbuild.gradle 檔案中) 設定為使用 版本 2.15.0 或更新版本 適用於 Java 的 AWS SDK。

例如:

<project> <dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.27.21</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> </project>

使用等待程式

若要執行個體化等待程式物件,請先建立服務用戶端。將服務用戶端的 waiter()方法設定為等待程式物件的值。等待程式執行個體存在後,請設定其回應選項來執行適當的程式碼。

同步程式設計

下列程式碼片段顯示如何等待 DynamoDB 資料表存在並處於 ACTIVE 狀態。

DynamoDbClient dynamo = DynamoDbClient.create(); DynamoDbWaiter waiter = dynamo.waiter(); WaiterResponse<DescribeTableResponse> waiterResponse = waiter.waitUntilTableExists(r -> r.tableName("myTable")); // print out the matched response with a tableStatus of ACTIVE waiterResponse.matched().response().ifPresent(System.out::println);

非同步程式設計

下列程式碼片段顯示如何等待 DynamoDB 資料表不再存在。

DynamoDbAsyncClient asyncDynamo = DynamoDbAsyncClient.create(); DynamoDbAsyncWaiter asyncWaiter = asyncDynamo.waiter(); CompletableFuture<WaiterResponse<DescribeTableResponse>> waiterResponse = asyncWaiter.waitUntilTableNotExists(r -> r.tableName("myTable")); waiterResponse.whenComplete((r, t) -> { if (t == null) { // print out the matched ResourceNotFoundException r.matched().exception().ifPresent(System.out::println); } }).join();

設定等待程式

您可以使用其建置器overrideConfiguration()上的 來自訂等待程式的組態。對於某些操作,您可以在提出請求時套用自訂組態。

設定等待程式

下列程式碼片段顯示如何覆寫等待程式上的組態。

// sync DynamoDbWaiter waiter = DynamoDbWaiter.builder() .overrideConfiguration(b -> b.maxAttempts(10)) .client(dynamoDbClient) .build(); // async DynamoDbAsyncWaiter asyncWaiter = DynamoDbAsyncWaiter.builder() .client(dynamoDbAsyncClient) .overrideConfiguration(o -> o.backoffStrategy( FixedDelayBackoffStrategy.create(Duration.ofSeconds(2)))) .scheduledExecutorService(Executors.newScheduledThreadPool(3)) .build();

覆寫特定請求的組態

下列程式碼片段示範如何根據請求覆寫等待程式的組態。請注意,只有部分操作具有可自訂的組態。

waiter.waitUntilTableNotExists(b -> b.tableName("myTable"), o -> o.maxAttempts(10)); asyncWaiter.waitUntilTableExists(b -> b.tableName("myTable"), o -> o.waitTimeout(Duration.ofMinutes(1)));

程式碼範例

如需搭配 使用等待程式的完整範例 DynamoDB,請參閱 AWS 程式碼範例儲存庫中的 CreateTable.java

如需搭配 使用等待程式的完整範例 Amazon S3,請參閱 AWS 程式碼範例儲存庫中的 S3BucketOps.java

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy