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
Ein vollständiges Beispiel für die Verwendung von waiters with Amazon S3 finden Sie S3BucketOps.java