Polling untuk status sumber daya di AWS SDK for Java 2.x: Pelayan - AWS SDK for Java 2.x

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Polling untuk status sumber daya di AWS SDK for Java 2.x: Pelayan

Utilitas pelayan dari AWS SDK for Java 2.x memungkinkan Anda untuk memvalidasi bahwa AWS sumber daya berada dalam keadaan tertentu sebelum melakukan operasi pada sumber daya tersebut.

Pelayan adalah abstraksi yang digunakan untuk polling AWS sumber daya, seperti DynamoDB tabel atau Amazon S3 ember, sampai keadaan yang diinginkan tercapai (atau sampai penentuan dibuat bahwa sumber daya tidak akan pernah mencapai keadaan yang diinginkan). Alih-alih menulis logika untuk terus polling AWS sumber daya Anda, yang dapat menjadi rumit dan rawan kesalahan, Anda dapat menggunakan pelayan untuk polling sumber daya dan membuat kode Anda terus berjalan setelah sumber daya siap.

Prasyarat

Sebelum Anda dapat menggunakan pelayan dalam proyek dengan AWS SDK for Java, Anda harus menyelesaikan langkah-langkah dalam Menyiapkan 2.x. AWS SDK for Java

Anda juga harus mengonfigurasi dependensi proyek Anda (misalnya, di build.gradle file pom.xml atau Anda) untuk menggunakan versi 2.15.0 atau yang lebih baru. AWS SDK for Java

Sebagai contoh:

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

Menggunakan pelayan

Untuk membuat instance objek pelayan, pertama buat klien layanan. Tetapkan waiter() metode klien layanan sebagai nilai objek pelayan. Setelah instance pelayan ada, atur opsi responsnya untuk mengeksekusi kode yang sesuai.

Pemrograman sinkron

Cuplikan kode berikut menunjukkan cara menunggu DynamoDB tabel ada dan berada dalam keadaan. 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);

Pemrograman asinkron

Cuplikan kode berikut menunjukkan cara menunggu DynamoDB tabel tidak ada lagi.

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

Konfigurasikan pelayan

Anda dapat menyesuaikan konfigurasi untuk pelayan dengan menggunakan overrideConfiguration() pada pembangunnya. Untuk beberapa operasi, Anda dapat menerapkan konfigurasi khusus saat Anda membuat permintaan.

Konfigurasikan pelayan

Cuplikan kode berikut menunjukkan cara mengganti konfigurasi pada pelayan.

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

Ganti konfigurasi untuk permintaan tertentu

Cuplikan kode berikut menunjukkan cara mengganti konfigurasi untuk pelayan berdasarkan per-permintaan. Perhatikan bahwa hanya beberapa operasi yang memiliki konfigurasi yang dapat disesuaikan.

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

Contoh kode

Untuk contoh lengkap menggunakan pelayan dengan DynamoDB, lihat CreateTable.java di Repositori Contoh AWS Kode.

Untuk contoh lengkap menggunakan pelayan dengan Amazon S3, lihat S3 BucketOps .java di Repositori Contoh Kode. AWS