Umfrage zum Ressourcenstatus in der Version AWS SDK for Java 2.x: Kellner - AWS SDK for Java 2.x

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Umfrage zum Ressourcenstatus in der Version AWS SDK for Java 2.x: Kellner

Mit dem Waiter-Hilfsprogramm der Version AWS SDK for Java 2.x können Sie überprüfen, ob sich AWS Ressourcen in einem bestimmten Zustand befinden, bevor Sie Operationen mit diesen Ressourcen ausführen.

Ein Waiter ist eine Abstraktion, die verwendet wird, um AWS Ressourcen wie DynamoDB Tabellen oder Amazon S3 Buckets abzufragen, bis ein gewünschter Status erreicht ist (oder bis festgestellt wird, dass die Ressource niemals den gewünschten Status erreichen wird). Anstatt Logik zu schreiben, um Ihre AWS Ressourcen kontinuierlich abzufragen, was umständlich und fehleranfällig sein kann, können Sie Waiter verwenden, um eine Ressource abzufragen und Ihren Code weiterlaufen zu lassen, nachdem die Ressource bereit ist.

Voraussetzungen

Bevor Sie Waiters in einem Projekt mit dem verwenden können AWS SDK for Java, müssen Sie die Schritte unter 2.x einrichten ausführen. AWS SDK for Java

Außerdem müssen Sie Ihre Projektabhängigkeiten (z. B. in Ihrer pom.xml build.gradle OR-Datei) so konfigurieren, dass Version 2.15.0 oder höher von verwendet wird. AWS SDK for Java

Beispielsweise:

<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>

Kellner benutzen

Um ein Waiters-Objekt zu instanziieren, erstellen Sie zunächst einen Service-Client. Legen Sie die waiter() Methode des Service-Clients als Wert des Waiter-Objekts fest. Sobald die Waiter-Instanz existiert, legen Sie ihre Antwortoptionen fest, um den entsprechenden Code auszuführen.

Synchrone Programmierung

Der folgende Codeausschnitt zeigt, wie man darauf wartet, dass eine DynamoDB Tabelle existiert und sich in einem bestimmten Zustand befindet. 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);

Asynchrone Programmierung

Der folgende Codeausschnitt zeigt, wie man darauf wartet, dass eine DynamoDB Tabelle nicht mehr existiert.

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();

Kellner konfigurieren

Sie können die Konfiguration für einen Kellner anpassen, indem Sie den in overrideConfiguration() seinem Builder verwenden. Bei einigen Vorgängen können Sie bei der Anfrage eine benutzerdefinierte Konfiguration anwenden.

Konfigurieren Sie einen Kellner

Der folgende Codeausschnitt zeigt, wie Sie die Konfiguration eines Kellners überschreiben können.

// 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();

Die Konfiguration für eine bestimmte Anfrage überschreiben

Der folgende Codeausschnitt zeigt, wie Sie die Konfiguration für einen Kellner pro Anfrage überschreiben können. Beachten Sie, dass nur für einige Operationen anpassbare Konfigurationen verfügbar sind.

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

Codebeispiele

Ein vollständiges Beispiel für die Verwendung von waiters with DynamoDB finden Sie unter CreateTable.java im AWS Code Examples Repository.

Ein vollständiges Beispiel für die Verwendung von waiters with Amazon S3 finden Sie unter S3 BucketOps .java im Code Examples Repository. AWS