Batas Waktu Visibilitas, DLQ, dan Polling Panjang
Tetapkan batas waktu visibilitas agar pesan tidak diproses dua kali, arahkan pesan gagal ke antrean surat mati, dan kurangi biaya dengan polling panjang.
Batas Waktu Visibilitas, DLQ, dan Polling Panjang adalah pelajaran Cloud & IT Cert Prep gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cloud & IT Cert Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cloud & IT Cert Prep mencakup 4 pelajaran total.
Mekanisme Batas Waktu Visibilitas
Ketika konsumen menerima pesan dari SQS, pesan tersebut disembunyikan dari semua konsumen lain selama periode yang disebut batas waktu visibilitas. Selama jangka waktu ini, konsumen memproses pesan lalu menghapusnya. Jika konsumen mengalami kerusakan atau tidak selesai tepat waktu, batas waktu visibilitas berakhir dan pesan menjadi terlihat kembali, sehingga konsumen lain dapat mengambilnya. Inilah mekanisme utama di balik jaminan pengiriman setidaknya sekali dari SQS.
Mengonfigurasi Batas Waktu Visibilitas
Batas waktu visibilitas default adalah 30 detik. Nilainya dapat diatur dari 0 detik hingga 12 jam. Aturlah agar sedikit lebih lama dari waktu pemrosesan maksimum yang diharapkan—jika pemrosesan memerlukan waktu hingga 2 menit, tetapkan batas waktu setidaknya 3–4 menit. Anda juga dapat mengubah batas waktu per receipt menggunakan change-message-visibility, yang berguna ketika konsumen mendeteksi bahwa waktu tambahan diperlukan untuk menyelesaikan pemrosesan pesan tertentu.
# Extend visibility timeout for a specific message
aws sqs change-message-visibility \
--queue-url 'https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue' \
--receipt-handle 'AQEBwJnKyrHigUMZj...' \
--visibility-timeout 300Batas Waktu Terlalu Singkat vs Terlalu Lama
Menetapkan batas waktu yang terlalu singkat menyebabkan pesan muncul kembali sebelum konsumen selesai, sehingga terjadi pemrosesan duplikat. Menetapkannya terlalu lama menunda konsumen lain mengambil pesan jika konsumen awal gagal tanpa diketahui (misalnya, instans EC2 mengalami kerusakan tanpa pembersihan yang baik). Batas waktu optimal adalah sedikit lebih lama daripada waktu pemrosesan persentil ke-99 Anda, tetapi cukup singkat agar dapat pulih dengan cepat dari kegagalan konsumen. Pantau metrik CloudWatch ApproximateNumberOfMessagesNotVisible untuk menemukan masalah batas waktu.
Penjelasan Queue Huruf Mati
Queue Huruf Mati (DLQ) adalah queue SQS terpisah tempat pesan dikirim setelah gagal diproses beberapa kali sesuai konfigurasi (maxReceiveCount). Ketika jumlah penerimaan pesan melebihi maxReceiveCount, SQS secara otomatis memindahkannya ke DLQ. DLQ mencegah pesan beracun (pesan yang selalu gagal) memblokir queue tanpa batas. Pesan di DLQ dapat diperiksa, diperbaiki masalahnya, dan diputar ulang setelah bug pemrosesan diperbaiki.
Mengonfigurasi Queue Huruf Mati
DLQ hanyalah queue SQS biasa (Standard untuk sumber Standard, FIFO untuk sumber FIFO). Anda mengonfigurasi Kebijakan Pengalihan pada queue sumber untuk menentukan queue mana yang menjadi DLQ serta ambang maxReceiveCount. Pastikan periode retensi DLQ lebih lama daripada periode retensi queue sumber—pesan tiba di DLQ dalam keadaan sudah tertunda, dan Anda memerlukan waktu untuk menyelidikinya sebelum pesan kedaluwarsa.
aws sqs set-queue-attributes \
--queue-url 'https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue' \
--attributes '{
"RedrivePolicy": "{\"deadLetterTargetArn\": \"arn:aws:sqs:us-east-1:123456789012:MyDLQ\", \"maxReceiveCount\": \"5\"}"
}'Pemantauan DLQ dan Penyiapan Alarm
Tetapkan alarm CloudWatch pada metrik ApproximateNumberOfMessagesVisible milik DLQ. Setiap pesan yang tiba di DLQ menunjukkan kegagalan pemrosesan yang perlu ditangani. Konfigurasikan alarm agar memicu notifikasi SNS yang segera menghubungi teknisi yang sedang bertugas. Perlakukan setiap pesan DLQ sebagai bug yang perlu diselidiki—pesan DLQ tidak boleh menumpuk tanpa diketahui. Setelah bug diperbaiki, gunakan Pengalihan DLQ untuk mengirim pesan kembali ke queue sumber agar diproses ulang.
Pengalihan DLQ: Memutar Ulang Pesan
Setelah memperbaiki bug yang menyebabkan kegagalan pemrosesan, gunakan Pengalihan DLQ SQS untuk memindahkan pesan dari DLQ kembali ke queue sumber agar diproses ulang. Konsol menyediakan kemampuan pengalihan bawaan. Anda dapat memfilter berdasarkan atribut pesan untuk memutar ulang hanya pesan tertentu. Sebagai alternatif, tulislah fungsi Lambda untuk melakukan polling terhadap DLQ dan meneruskan pesan kembali ke queue sumber jika Anda memerlukan logika pemfilteran khusus.
# Start DLQ message move task
aws sqs start-message-move-task \
--source-arn 'arn:aws:sqs:us-east-1:123456789012:MyDLQ' \
--destination-arn 'arn:aws:sqs:us-east-1:123456789012:MyQueue' \
--max-number-of-messages-per-second 5Polling Singkat vs Polling Panjang
Secara default, SQS menggunakan polling singkat: panggilan receive-message mengambil sampel acak dari sebagian server dan segera mengembalikan hasil—bahkan jika tidak ada pesan yang tersedia. Hal ini menghasilkan banyak respons kosong dan memboroskan panggilan API. Polling panjang menunggu hingga 20 detik agar pesan tiba sebelum mengembalikan respons kosong. Polling panjang mengurangi biaya secara signifikan (lebih sedikit panggilan API) dan menurunkan latensi (pesan diterima segera setelah tiba, hingga 20 detik lebih cepat daripada siklus polling berikutnya).
Mengaktifkan Polling Panjang
Aktifkan polling panjang pada tingkat queue (berlaku untuk semua panggilan penerimaan) atau per permintaan. Konfigurasi tingkat queue dengan ReceiveMessageWaitTimeSeconds bernilai 20 adalah pengaturan yang direkomendasikan untuk sebagian besar aplikasi. Saat Lambda menggunakan SQS sebagai sumber peristiwa, Lambda secara otomatis menggunakan polling panjang. Untuk konsumen berbasis EC2, tetapkan WaitTimeSeconds dalam panggilan receive-message.
# Enable long polling at queue level (recommended)
aws sqs set-queue-attributes \
--queue-url 'https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue' \
--attributes '{"ReceiveMessageWaitTimeSeconds": "20"}'
# Or per-request
aws sqs receive-message \
--queue-url 'https://...' \
--wait-time-seconds 20 \
--max-number-of-messages 10Atribut Pesan dan Pemfilteran
Pesan SQS dapat membawa atribut pesan—metadata berupa pasangan kunci-nilai yang terpisah dari isi pesan. Atribut memiliki jenis (String, Number, Binary) dan nilai. Saat SQS berlangganan ke topik SNS, Anda dapat menggunakan kebijakan filter langganan SNS yang diterapkan pada atribut pesan untuk mengarahkan hanya pesan yang relevan ke setiap queue. Tanpa pemfilteran, setiap pelanggan SQS menerima setiap publikasi SNS tanpa memandang isinya.
Queue Penundaan dan Pengatur Waktu Pesan
Queue Penundaan membuat setiap pesan baru tidak terlihat selama periode penundaan (0 hingga 15 menit) setelah dikirim. Ini berguna untuk alur kerja ketika konsumen tidak boleh segera memproses pesan—misalnya, karena harus menunggu proses yang bergantung padanya selesai terlebih dahulu. Anda juga dapat menetapkan penundaan per pesan menggunakan DelaySeconds dalam panggilan pengiriman, yang menggantikan penundaan tingkat queue. Catatan: queue penundaan tidak tersedia untuk queue FIFO.
# Create a delay queue (5 minute delay)
aws sqs create-queue \
--queue-name 'DelayedProcessingQueue' \
--attributes '{"DelaySeconds": "300"}'Pemeriksaan Cepat
Uji pemahaman Anda tentang konsep AWS Solutions Architect (SAA-C03) dari pelajaran ini.
Rangkuman Pelajaran
Dalam pelajaran ini Anda mempelajari: Visibility Timeout menyembunyikan pesan dari konsumen lain selama pemrosesan, sehingga memungkinkan pengiriman setidaknya sekali dengan pengiriman ulang otomatis jika konsumen gagal, Dead-Letter Queues menampung pesan yang berulang kali gagal untuk penelusuran kesalahan dan diproses ulang setelah bug diperbaiki, serta Long Polling (waktu tunggu hingga 20 detik) mengurangi biaya API dan latensi dibandingkan polling singkat. Selanjutnya, kita akan membahas topik SNS dan arsitektur fan-out.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Batas Waktu Visibilitas, DLQ, dan Polling Panjang” gratis?
Ya — teks lengkap “Batas Waktu Visibilitas, DLQ, dan Polling Panjang” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cloud & IT Cert Prep, upgrade ke CoddyKit PRO. Kursus Cloud & IT Cert Prep mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Batas Waktu Visibilitas, DLQ, dan Polling Panjang”?
Tetapkan batas waktu visibilitas agar pesan tidak diproses dua kali, arahkan pesan gagal ke antrean surat mati, dan kurangi biaya dengan polling panjang. Kamu berlatih Cloud & IT Cert Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Cloud & IT Cert Prep?
Tidak diperlukan pengalaman sebelumnya. Cloud & IT Cert Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Batas Waktu Visibilitas, DLQ, dan Polling Panjang” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Cloud & IT Cert Prep ini?
Ya. Setiap pelajaran Cloud & IT Cert Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Antrean SQS Standard vs FIFO
- Batas Waktu Visibilitas, DLQ, dan Polling Panjang
- Topik SNS dan Arsitektur Penyebaran
- Penyaringan Pesan SQS dan Integrasi SNS + SQS