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