Amazon SQS polling pendek dan panjang - Amazon Simple Queue Service

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

Amazon SQS polling pendek dan panjang

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

  • Jajak pendapat singkat (default) — ReceiveMessagePermintaan 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 — ReceiveMessagemenanyakan semua server untuk pesan, mengirim respons sekali setidaknya satu pesan tersedia, hingga maksimum yang ditentukan. Respons kosong dikirim hanya jika waktu tunggu polling berakhir. Opsi ini dapat mengurangi jumlah tanggapan kosong dan biaya yang berpotensi lebih rendah.

Bagian berikut menjelaskan rincian polling pendek dan polling panjang.

Mengkonsumsi pesan menggunakan polling singkat

Saat Anda menggunakan pesan dari antrian (FIFO atau standar) menggunakan polling singkat, Amazon SQS mengambil sampel subset servernya (berdasarkan distribusi acak tertimbang) dan menampilkan pesan hanya dari server tersebut. Dengan demikian, ReceiveMessagepermintaan 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 mengkonsumsi 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 terima. 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 singkat (standar)

Mengkonsumsi pesan menggunakan polling panjang

Ketika waktu tunggu untuk tindakan ReceiveMessage API lebih besar dari 0, polling panjang berlaku. Waktu tunggu polling maksimum yang panjang adalah 20 detik. Polling panjang membantu mengurangi biaya penggunaan Amazon SQS dengan menghilangkan jumlah respons kosong (bila tidak ada pesan yang tersedia untuk ReceiveMessage permintaan) dan respons kosong palsu (saat pesan tersedia tetapi tidak disertakan dalam respons). Untuk informasi tentang mengaktifkan polling panjang untuk antrean 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.

Jajak pendapat panjang menawarkan manfaat berikut:

  • Kurangi respons 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 ReceiveMessageWaitTimeSecondsparameter tersebut.

  • Kurangi respons kosong palsu dengan menanyakan semua—bukan subset 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 singkat terjadi ketika WaitTimeSecondsparameter ReceiveMessage permintaan diatur ke 0 dalam salah satu dari dua cara:

  • ReceiveMessagePanggilan ditetapkan WaitTimeSeconds ke0.

  • ReceiveMessagePanggilan tidak disetelWaitTimeSeconds, tetapi atribut antrian ReceiveMessageWaitTimeSecondsdisetel ke0.