

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.

# Mit Kellnern in der AWS SDK for Java 2.x
<a name="waiters"></a>

Mit dem Waiter-Hilfsprogramm 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 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
<a name="prerequisiteswaiters"></a>

[Bevor Sie Waiters in einem Projekt mit dem verwenden können AWS SDK für Java, müssen Sie die Schritte unter 2.x einrichten ausführen. AWS SDK für Java](setup.md)

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 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 benutzen
<a name="id1waiters"></a>

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
<a name="synchronous-programming"></a>

**Der folgende Codeausschnitt zeigt, wie man darauf wartet, dass eine DynamoDB Tabelle existiert und sich im Status AKTIV 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
<a name="asynchronous-programming"></a>

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
<a name="configuring-waiters"></a>

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
<a name="configure-a-waiter"></a>

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

### Überschreiben Sie die Konfiguration für eine bestimmte Anfrage
<a name="override-configuration-for-a-specific-request"></a>

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
<a name="code-examples"></a>

Ein vollständiges Beispiel für die Verwendung von waiters with DynamoDB finden Sie unter [CreateTable.java](https://github.com/awsdocs/aws-doc-sdk-examples/blob/869b7ddbc7c8f66c7c45acd5b813429aff37003e/javav2/example_code/dynamodb/src/main/java/com/example/dynamodb/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](https://github.com/awsdocs/aws-doc-sdk-examples/blob/869b7ddbc7c8f66c7c45acd5b813429aff37003e/javav2/example_code/s3/src/main/java/com/example/s3/S3BucketOps.java) im Code Examples Repository. AWS 