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
È 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.27.21</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
Per un esempio completo di utilizzo di waiters with Amazon S3, vedete S3 BucketOps