View a markdown version of this page

L'uso dei camerieri nel AWS SDK for Java 2.x - 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à.

L'uso dei camerieri nel AWS SDK for Java 2.x

L'utilità waiters del AWS SDK per Java 2.x consente di convalidare che le risorse si trovino in uno stato specificato prima di eseguire operazioni su tali AWS risorse.

Un waiter è un'astrazione utilizzata per interrogare 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 eseguire il polling continuo AWS delle risorse, operazione che può essere complicata e soggetta a errori, è possibile utilizzare i waiters per eseguire il polling di una risorsa e fare in modo che il codice continui a essere eseguito dopo che la risorsa è pronta.

Prerequisiti

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

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

Ad esempio:

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

Usare i camerieri

Per creare un'istanza di un oggetto waiters, create prima un client di servizio. Imposta il waiter() metodo del client di servizio come valore dell'oggetto waiter. Una volta che l'istanza waiter 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 ATTIVO.

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 overrideConfiguration() relativo generatore. Per alcune operazioni, puoi applicare una configurazione personalizzata quando effettui la richiesta.

Configura un cameriere

Il seguente frammento di codice mostra come sovrascrivere la configurazione di 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 per 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, consultate il AWS Code CreateTable.java Examples Repository.

Per un esempio completo di utilizzo di waiters with Amazon S3, consulta il Code Examples S3BucketOps.java Repository. AWS