Mengatur Timeout Visibilitas diAmazon SQS - AWS SDK for Java 1.x

AWS SDK for Java 1.x telah memasuki mode pemeliharaan pada 31 Juli 2024, dan akan mencapai end-of-supportpada 31 Desember 2025. Kami menyarankan Anda bermigrasi ke AWS SDK for Java 2.xuntuk terus menerima fitur baru, peningkatan ketersediaan, dan pembaruan keamanan.

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

Mengatur Timeout Visibilitas diAmazon SQS

Ketika pesan diterima diAmazon SQS, tetap pada antrian sampai dihapus untuk memastikan penerimaan. Sebuah pesan yang diterima, tetapi tidak dihapus, akan tersedia dalam permintaan berikutnya setelah diberikanbatas waktu visibilitasuntuk membantu mencegah pesan diterima lebih dari sekali sebelum dapat diproses dan dihapus.

catatan

Saat menggunakanAntrean standar, waktu tunggu visibilitas bukanlah jaminan untuk menerima pesan dua kali. Jika Anda menggunakan antrian standar, pastikan kode Anda dapat menangani kasus di mana pesan yang sama telah dikirimkan lebih dari satu kali.

Mengatur Timeout Visibilitas Pesan untuk Satu Pesan

Ketika Anda telah menerima pesan, Anda dapat memodifikasi batas waktu visibilitas dengan melewati pegangan tanda terima dalamChangeMessageVisibilityRequestyang Anda lewati ke kelas AmazonSqs 'changeMessageVisibilitymetode.

Impor

import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder;

Kode

AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); // Get the receipt handle for the first message in the queue. String receipt = sqs.receiveMessage(queue_url) .getMessages() .get(0) .getReceiptHandle(); sqs.changeMessageVisibility(queue_url, receipt, timeout);

Lihatcontoh lengkapdi GitHub.

Mengatur Timeout Visibilitas Pesan untuk Beberapa Pesan sekaligus

Untuk mengatur batas waktu tunggu visibilitas pesan untuk beberapa pesan sekaligus, buat daftarChangeMessageVisibilityBatchRequestEntryobjek, masing-masing berisi string ID unik dan pegangan tanda terima. Kemudian, lewati daftar keAmazon SQSclass clientchangeMessageVisibilityBatchmetode.

Impor

import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder; import com.amazonaws.services.sqs.model.ChangeMessageVisibilityBatchRequestEntry; import java.util.ArrayList; import java.util.List;

Kode

AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); List<ChangeMessageVisibilityBatchRequestEntry> entries = new ArrayList<ChangeMessageVisibilityBatchRequestEntry>(); entries.add(new ChangeMessageVisibilityBatchRequestEntry( "unique_id_msg1", sqs.receiveMessage(queue_url) .getMessages() .get(0) .getReceiptHandle()) .withVisibilityTimeout(timeout)); entries.add(new ChangeMessageVisibilityBatchRequestEntry( "unique_id_msg2", sqs.receiveMessage(queue_url) .getMessages() .get(0) .getReceiptHandle()) .withVisibilityTimeout(timeout + 200)); sqs.changeMessageVisibilityBatch(queue_url, entries);

Lihatcontoh lengkapdi GitHub.

Info Selengkapnya