View a markdown version of this page

Polling pendek dan panjang Amazon SQS - Amazon Simple Queue Service

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

Polling pendek dan panjang Amazon SQS

Amazon SQS menawarkan opsi polling pendek dan panjang untuk menerima pesan dari antrian. Pertimbangkan persyaratan aplikasi Anda untuk responsivitas dan efisiensi biaya saat memilih di antara dua opsi polling ini:

  • Polling pendek (default) — Per ReceiveMessage mintaan meminta subset server (berdasarkan distribusi acak tertimbang) untuk menemukan pesan yang tersedia dan mengirimkan respons langsung, bahkan jika tidak ada pesan yang ditemukan.

  • Polling panjang ReceiveMessage menanyakan semua server untuk pesan, mengirim respons setelah setidaknya satu pesan tersedia, hingga maksimum yang ditentukan. Tanggapan kosong dikirim hanya jika waktu tunggu polling berakhir. Opsi ini dapat mengurangi jumlah tanggapan kosong dan berpotensi menurunkan biaya.

Bagian berikut menjelaskan rincian polling pendek dan polling panjang.

Mengkonsumsi pesan menggunakan polling pendek

Saat Anda menggunakan pesan dari antrian (FIFO atau standar) menggunakan polling pendek, Amazon SQS mengambil sampel subset servernya (berdasarkan distribusi acak tertimbang) dan mengembalikan pesan hanya dari server tersebut. Dengan demikian, ReceiveMessage permintaan tertentu mungkin tidak mengembalikan semua pesan Anda. Namun, jika Anda memiliki kurang dari 1.000 pesan dalam antrian Anda, permintaan berikutnya akan mengembalikan pesan Anda. Jika Anda terus mengonsumsi dari antrian Anda, Amazon SQS mengambil sampel semua servernya, dan Anda menerima semua pesan Anda.

Diagram berikut menunjukkan perilaku polling singkat pesan yang dikembalikan dari antrian standar setelah salah satu komponen sistem Anda membuat permintaan penerimaan. Amazon SQS mengambil sampel beberapa servernya (berwarna abu-abu) dan mengembalikan pesan A, C, D, dan B dari server ini. Pesan E tidak dikembalikan untuk permintaan ini, tetapi dikembalikan untuk permintaan berikutnya.

Pengambilan sampel pesan menggunakan polling pendek (standar)

Mengkonsumsi pesan menggunakan polling panjang

Ketika waktu tunggu untuk tindakan ReceiveMessage API lebih besar dari 0, polling panjang berlaku. Waktu tunggu polling yang panjang maksimum adalah 20 detik. Polling panjang membantu mengurangi biaya penggunaan Amazon SQS dengan mengurangi jumlah tanggapan kosong (ketika tidak ada pesan yang tersedia untuk ReceiveMessage permintaan) dan respons kosong palsu (ketika pesan tersedia tetapi tidak disertakan dalam respons). Untuk informasi tentang mengaktifkan polling panjang untuk antrian baru atau yang sudah ada menggunakan konsol Amazon SQS, lihat. Mengkonfigurasi parameter antrian menggunakan konsol Amazon SQS Untuk praktik terbaik, lihat Mengatur polling panjang di Amazon SQS.

Pemungutan suara panjang menawarkan manfaat berikut:

  • Kurangi tanggapan kosong dengan mengizinkan Amazon SQS menunggu hingga pesan tersedia dalam antrian sebelum mengirim respons. Kecuali waktu koneksi habis, respons terhadap ReceiveMessage permintaan berisi setidaknya satu pesan yang tersedia, hingga jumlah maksimum pesan yang ditentukan dalam ReceiveMessage tindakan. Dalam kasus yang jarang terjadi, Anda mungkin menerima respons kosong bahkan ketika antrian masih berisi pesan, terutama jika Anda menentukan nilai rendah untuk ReceiveMessageWaitTimeSeconds parameter.

  • Kurangi respons kosong palsu dengan menanyakan semuanya—bukan subkumpulan dari — server Amazon SQS.

  • Kembalikan pesan segera setelah tersedia.

Untuk informasi tentang cara mengonfirmasi bahwa antrian kosong, lihatMengonfirmasi bahwa antrian Amazon SQS kosong.

Perbedaan antara polling panjang dan pendek

Polling pendek terjadi ketika WaitTimeSeconds parameter ReceiveMessage permintaan diatur 0 dalam salah satu dari dua cara:

  • Pang ReceiveMessage gilan diatur WaitTimeSeconds ke0.

  • Pang ReceiveMessage gilan tidak disetelWaitTimeSeconds, tetapi atribut antrean ReceiveMessageWaitTimeSeconds disetel ke0.