Sondaggio sugli stati delle risorse nella versione AWS SDK for Java 2.x: Waiters - AWS SDK for Java 2.x

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Sondaggio sugli stati delle risorse nella versione AWS SDK for Java 2.x: Waiters

L'utilità waiters della versione AWS SDK for Java 2.x consente di verificare che le risorse si trovino in uno stato specifico prima di eseguire operazioni su tali AWS risorse.

Un cameriere è un'astrazione utilizzata per esaminare le AWS risorse, come DynamoDB tabelle o Amazon S3 bucket, fino al raggiungimento dello stato desiderato (o fino a quando non viene stabilito che la risorsa non raggiungerà mai lo stato desiderato). Invece di scrivere una logica per il polling continuo AWS delle risorse, operazione che può essere complessa e soggetta a errori, è possibile utilizzare i camerieri per interrogare una risorsa e far sì che il codice continui a funzionare quando la risorsa è pronta.

Prerequisiti

Prima di poter utilizzare i camerieri in un progetto con, è necessario completare i passaggi descritti in Configurazione della versione AWS SDK for Java 2.x. AWS SDK for Java

È inoltre necessario configurare le dipendenze del progetto (ad esempio, nel build.gradle file pom.xml o) per utilizzare la versione 2.15.0 o successiva di. AWS SDK for Java

Per esempio:

<project> <dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.15.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> </project>

Usare i camerieri

Per creare un'istanza di un oggetto waiters, crea prima un client di servizio. Imposta il waiter() metodo del client del servizio come valore dell'oggetto waiter. Una volta che l'istanza del cameriere esiste, imposta le sue opzioni di risposta per eseguire il codice appropriato.

Programmazione sincrona

Il seguente frammento di codice mostra come attendere che una DynamoDB tabella esista e si trovi in uno stato. 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);

Programmazione asincrona

Il seguente frammento di codice mostra come attendere che una DynamoDB tabella non esista più.

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

Configura i camerieri

Puoi personalizzare la configurazione di un cameriere utilizzando il comando overrideConfiguration() on its builder. Per alcune operazioni, è possibile applicare una configurazione personalizzata quando si effettua la richiesta.

Configura un cameriere

Il seguente frammento di codice mostra come sovrascrivere la configurazione su un cameriere.

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

Sostituisci la configurazione per una richiesta specifica

Il seguente frammento di codice mostra come sovrascrivere la configurazione di un cameriere in base alla richiesta. Nota che solo alcune operazioni hanno configurazioni personalizzabili.

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

Esempi di codice

Per un esempio completo di utilizzo di waiters with DynamoDB, consulta CreateTable.java nel Code Examples Repository. AWS

Per un esempio completo di utilizzo di waiters with Amazon S3, vedete S3 BucketOps .java nel Code Examples Repository. AWS