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 versi 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
Untuk contoh lengkap menggunakan pelayan dengan Amazon S3, lihat S3 BucketOps .java