Memecahkan masalah pesan yang tidak dikembalikan untuk panggilan Amazon SQS API ReceiveMessage - Amazon Simple Queue Service

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

Memecahkan masalah pesan yang tidak dikembalikan untuk panggilan Amazon SQS API ReceiveMessage

Topik berikut mencakup penyebab paling umum mengapa pesan Amazon SQS mungkin tidak dikembalikan ke konsumen, dan cara memecahkan masalah mereka. Untuk informasi selengkapnya, lihat Mengapa saya tidak dapat menerima pesan dari antrian Amazon SQS saya? dalam Panduan Pusat AWS Pengetahuan.

Antrian kosong

Untuk menentukan apakah antrian kosong, gunakan polling panjang untuk memanggil API. ReceiveMessage Anda juga dapat menggunakanApproximateNumberOfMessagesVisible,ApproximateNumberOfMessagesNotVisible, dan ApproximateNumberOfMessagesDelayed CloudWatch metrik. Jika semua nilai metrik diatur ke 0 selama beberapa menit, antrian dianggap kosong.

Dalam batas penerbangan tercapai

Jika Anda menggunakan polling panjang dan jika antrian dalam batas penerbangan (20000 untuk FIFO, 120000 untuk standar secara default) dilanggar, Amazon SQS tidak akan menampilkan pesan kesalahan yang melebihi batas kuota.

Penundaan pesan

Jika antrean Amazon SQS dikonfigurasi sebagai antrean penundaan, atau pesan dikirim dengan pengatur waktu pesan, maka pesan tidak akan terlihat hingga waktu tunda berakhir. Untuk memverifikasi apakah antrian dikonfigurasi sebagai antrean penundaan, gunakan DelaySeconds atribut GetQueueAttributesAPI, atau dari konsol antrian di bawah Penundaan pengiriman. Periksa ApproximateNumberOfMessagesDelayed CloudWatch metrik untuk memahami apakah ada pesan yang tertunda.

Pesan dalam penerbangan

Jika konsumen lain telah melakukan polling pesan, pesan akan dalam penerbangan atau tidak terlihat untuk periode batas waktu visibilitas. Jajak pendapat tambahan mungkin mengembalikan penerimaan kosong. Periksa ApproximateNumberOfMessagesVisible CloudWatchmetrik untuk memahami jumlah pesan yang tersedia untuk diterima. Dalam kasus antrian FIFO, jika pesan dengan ID grup pesan sedang dalam penerbangan, maka tidak ada lagi pesan yang akan dikembalikan kecuali Anda menghapus pesan, atau menjadi terlihat. Ini karena pengurutan pesan dipertahankan pada tingkat grup pesan dalam antrian FIFO.

Metode polling

Jika Anda menggunakan polling singkat, (WaitTimeSecondsadalah 0) Amazon SQS mengambil sampel subset dari servernya, dan mengembalikan pesan hanya dari server tersebut. Oleh karena itu, Anda mungkin tidak mendapatkan pesan bahkan jika mereka tersedia untuk diterima. Permintaan jajak pendapat berikutnya akan mengembalikan pesan.

Jika Anda menggunakan polling panjang, Amazon SQS polling semua server dan mengirimkan respons setelah mengumpulkan setidaknya satu pesan yang tersedia, dan hingga jumlah maksimum yang ditentukan. Jika nilai untuk ReceiveMessage WaitTimeSecondsterlalu rendah, Anda mungkin tidak menerima semua pesan yang tersedia.