View a markdown version of this page

Verwendung von Kellnern in der AWS SDK for Java 2.x - 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.

Verwendung von Kellnern in der AWS SDK for Java 2.x

Mit dem Dienstprogramm waiters der Version AWS SDK für 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 Zustand erreicht ist (oder bis festgestellt wird, dass die Ressource niemals den gewünschten Zustand erreichen wird). Anstatt Logik zu schreiben, um Ihre AWS Ressourcen kontinuierlich abzufragen, was umständlich und fehleranfällig sein kann, können Sie Kellner verwenden, um eine Ressource abzufragen und Ihren Code weiter ausführen zu lassen, nachdem die Ressource bereit ist.

Voraussetzungen

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

Sie müssen auch Ihre Projektabhängigkeiten (z. B. in Ihrer build.gradle OR-Datei) so konfigurieren, dass die Version pom.xml oder eine höhere Version 2.15.0 von verwendet wird. AWS SDK für Java

Beispiel:

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

Um ein Waiter-Objekt zu instanziieren, erstellen Sie zunächst einen Service-Client. Legen Sie die waiter() Methode des Serviceclients als Wert des Waiter-Objekts fest. Sobald die Waiter-Instanz existiert, legen Sie ihre Antwortoptionen so fest, dass der entsprechende Code ausgeführt wird.

Synchrone Programmierung

Der folgende Codeausschnitt zeigt, wie Sie darauf warten, dass eine DynamoDB Tabelle existiert und sich in einem AKTIVEN Zustand befindet.

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 Sie darauf warten, 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();

Konfigurieren Sie Kellner

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 eine benutzerdefinierte Konfiguration anwenden, wenn Sie die Anfrage stellen.

Konfiguriere einen Kellner

Der folgende Codeausschnitt zeigt, wie die Konfiguration eines Kellners außer Kraft gesetzt wird.

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

Überschreiben Sie die Konfiguration für eine bestimmte Anfrage

Der folgende Codeausschnitt zeigt, wie die Konfiguration für einen Kellner pro Anfrage außer Kraft gesetzt wird. 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 CreateTable.java im AWS Code Examples Repository.

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