Logika pengiriman antrian FIFO di 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.

Logika pengiriman antrian FIFO di Amazon SQS

Konsep berikut dapat membantu Anda lebih memahami pengiriman pesan ke dan menerima pesan dari FIFO.

Mengirim pesan

Jika beberapa pesan dikirim berturut-turut ke antrian FIFO, masing-masing dengan ID deduplikasi pesan yang berbeda, Amazon SQS menyimpan pesan dan mengakui transmisi. Kemudian, setiap pesan dapat diterima dan diproses dalam urutan yang tepat di mana pesan dikirim.

Dalam antrian FIFO, pesan diurutkan berdasarkan ID grup pesan. Jika beberapa host (atau thread berbeda pada host yang sama) mengirim pesan dengan ID grup pesan yang sama ke antrian FIFO, Amazon SQS menyimpan pesan dalam urutan kedatangan mereka untuk diproses. Untuk memastikan bahwa Amazon SQS mempertahankan urutan pengiriman dan penerimaan pesan, setiap produsen harus menggunakan ID grup pesan unik untuk mengirim semua pesannya.

Logika antrian FIFO hanya berlaku per ID grup pesan. Setiap ID grup pesan mewakili grup pesan terurut yang berbeda dalam antrean Amazon SQS. Untuk setiap ID grup pesan, semua pesan dikirim dan diterima dalam urutan yang ketat. Namun, pesan dengan nilai ID grup pesan yang berbeda mungkin dikirim dan diterima rusak. Anda harus mengaitkan ID grup pesan dengan pesan. Jika Anda tidak memberikan ID grup pesan, tindakan akan gagal. Jika Anda memerlukan satu grup pesan yang dipesan, berikan ID grup pesan yang sama untuk pesan yang dikirim ke antrean FIFO.

Menerima pesan

Anda tidak dapat meminta untuk menerima pesan dengan ID grup pesan tertentu.

Saat menerima pesan dari antrian FIFO dengan beberapa ID grup pesan, Amazon SQS pertama-tama mencoba mengembalikan sebanyak mungkin pesan dengan ID grup pesan yang sama. Hal ini memungkinkan konsumen lain untuk memproses pesan dengan ID grup pesan yang berbeda. Saat Anda menerima pesan dengan ID grup pesan, tidak ada lagi pesan untuk ID grup pesan yang sama yang dikembalikan kecuali Anda menghapus pesan atau pesan tersebut menjadi terlihat.

catatan

Dimungkinkan untuk menerima hingga 10 pesan dalam satu panggilan menggunakan parameter MaxNumberOfMessages permintaan ReceiveMessage tindakan. Pesan-pesan ini mempertahankan urutan FIFO mereka dan dapat memiliki ID grup pesan yang sama. Jadi, jika ada kurang dari 10 pesan yang tersedia dengan ID grup pesan yang sama, Anda mungkin menerima pesan dari ID grup pesan lain, dalam kumpulan 10 pesan yang sama, tetapi masih dalam urutan FIFO.

Mencoba lagi beberapa kali

Antrian FIFO memungkinkan produsen atau konsumen untuk mencoba beberapa percobaan ulang:

  • Jika produser mendeteksi SendMessage tindakan yang gagal, ia dapat mencoba lagi mengirim sebanyak yang diperlukan, menggunakan ID deduplikasi pesan yang sama. Dengan asumsi bahwa produsen menerima setidaknya satu pengakuan sebelum interval deduplikasi berakhir, beberapa percobaan ulang tidak mempengaruhi urutan pesan atau memperkenalkan duplikat.

  • Jika konsumen mendeteksi ReceiveMessage tindakan yang gagal, ia dapat mencoba lagi sebanyak yang diperlukan, menggunakan ID percobaan permintaan terima yang sama. Dengan asumsi bahwa konsumen menerima setidaknya satu pengakuan sebelum batas waktu visibilitas berakhir, beberapa percobaan ulang tidak memengaruhi urutan pesan.

  • Saat Anda menerima pesan dengan ID grup pesan, tidak ada lagi pesan untuk ID grup pesan yang sama yang dikembalikan kecuali Anda menghapus pesan atau pesan tersebut menjadi terlihat.