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 memperjelas bagaimana antrian Amazon SQS FIFO menangani pengiriman dan penerimaan pesan, terutama ketika berhadapan dengan pemesanan pesan dan grup pesan. IDs

Mengirim pesan

Antrian Amazon SQS FIFO mempertahankan urutan pesan menggunakan deduplikasi unik dan grup pesan. IDs IDs Topik ini menyoroti pentingnya grup pesan IDs untuk menjaga urutan yang ketat dalam grup dan menyoroti praktik terbaik untuk memastikan pengiriman pesan yang andal dan teratur di beberapa produsen.

  1. Pelestarian pesanan

    • Ketika beberapa pesan dikirim berturut-turut ke antrian FIFO dengan deduplikasi pesan unik, IDs Amazon SQS menyimpannya dan mengakui transmisi mereka. Pesan-pesan ini kemudian diterima dan diproses dalam urutan yang tepat mereka dikirimkan.

  2. ID grup pesan

    • Dalam antrian FIFO, pesan diurutkan berdasarkan ID grup pesan mereka. Jika beberapa produsen atau utas mengirim pesan dengan ID grup pesan yang sama, Amazon SQS memastikan pesan tersebut disimpan dan diproses sesuai urutan kedatangan.

    • Praktik terbaik: Untuk menjamin urutan pesan yang ketat di beberapa produsen, tetapkan ID grup pesan unik untuk semua pesan dari masing-masing produser.

  3. Pemesanan per kelompok

    • Logika antrian FIFO berlaku berdasarkan ID grup per pesan:

      • Setiap ID grup pesan mewakili grup pesan yang berbeda dan terurut.

      • Dalam ID grup pesan, semua pesan dikirim dan diterima dalam urutan yang ketat.

      • Pesan dengan grup pesan yang berbeda IDs dapat tiba atau diproses rusak relatif satu sama lain.

    • Persyaratan - Anda harus mengaitkan ID grup pesan dengan setiap pesan. Jika pesan dikirim tanpa ID grup, tindakan gagal.

    • Skenario grup tunggal - Jika Anda mengharuskan semua pesan diproses dalam urutan yang ketat, gunakan ID grup pesan yang sama untuk setiap pesan.

Menerima pesan

Antrian FIFO Amazon SQS menangani pengambilan pesan, termasuk pemrosesan batch, jaminan pesanan FIFO, dan batasan saat meminta grup pesan tertentu. IDs Topik ini menjelaskan cara Amazon SQS mengambil pesan di dalam dan di seluruh grup pesan IDs sambil mempertahankan aturan pemesanan dan visibilitas yang ketat.

  1. Pengambilan Batch

    • Saat menerima pesan dari antrian FIFO dengan beberapa grup pesan IDs, Amazon SQS:

      • Mencoba mengembalikan pesan sebanyak mungkin dengan ID grup pesan yang sama dalam satu panggilan.

      • Memungkinkan konsumen lain untuk memproses pesan dari grup pesan yang berbeda IDs secara bersamaan.

    • Klarifikasi penting

      • Anda dapat menerima beberapa pesan dari ID grup pesan yang sama dalam satu batch (hingga 10 pesan dalam satu panggilan menggunakan MaxNumberOfMessages parameter).

      • Namun, Anda tidak dapat menerima pesan tambahan dari ID grup pesan yang sama dalam permintaan berikutnya hingga:

        • Pesan yang diterima saat ini akan dihapus, atau

        • Mereka menjadi terlihat lagi (misalnya, setelah batas waktu visibilitas berakhir).

  2. Jaminan pesanan FIFO

    • Pesan yang diambil dalam batch mempertahankan urutan FIFO mereka di dalam grup.

    • Jika kurang dari 10 pesan tersedia untuk ID grup pesan yang sama, Amazon SQS dapat menyertakan pesan dari grup pesan lain IDs dalam kumpulan yang sama, tetapi setiap grup mempertahankan urutan FIFO.

  3. Keterbatasan konsumen

    • Anda tidak dapat secara eksplisit meminta untuk menerima pesan dari ID grup pesan tertentu.

Mencoba lagi beberapa kali

Produsen dan konsumen dapat dengan aman mencoba kembali tindakan yang gagal di antrian Amazon SQS FIFO tanpa mengganggu urutan pesan atau memperkenalkan duplikat. Topik ini menyoroti bagaimana batas waktu deduplikasi IDs dan visibilitas memastikan integritas pesan selama percobaan ulang.

  1. Produsen mencoba lagi

    • Jika SendMessagetindakan gagal, produser dapat mencoba lagi mengirim pesan beberapa kali dengan ID deduplikasi pesan yang sama.

    • Selama produsen menerima setidaknya satu pengakuan sebelum interval deduplikasi berakhir, coba lagi:

      • Jangan memperkenalkan pesan duplikat.

      • Jangan mengganggu pesanan pesan.

  2. Percobaan ulang konsumen

    • Jika suatu ReceiveMessagetindakan gagal, konsumen dapat mencoba lagi sebanyak yang diperlukan menggunakan ID percobaan permintaan terima yang sama.

    • Selama konsumen menerima setidaknya satu pengakuan sebelum batas waktu visibilitas berakhir, coba lagi:

      • Jangan mengganggu pesanan pesan.

Catatan tambahan tentang perilaku FIFO

Pelajari cara menangani batas waktu visibilitas, mengaktifkan pemrosesan paralel dengan beberapa IDs grup pesan, dan memastikan pemrosesan sekuensial yang ketat dalam skenario grup tunggal.

  1. Menangani batas waktu visibilitas

    • Ketika pesan diambil tetapi tidak dihapus, pesan tetap tidak terlihat sampai batas waktu visibilitas berakhir.

    • Tidak ada pesan tambahan dari ID grup pesan yang sama yang dikembalikan hingga pesan pertama dihapus atau terlihat lagi.

  2. Konkurensi dan pemrosesan paralel

    • Antrian FIFO memungkinkan pemrosesan paralel pesan di berbagai grup pesan. IDs

    • Untuk memaksimalkan konkurensi, rancang sistem Anda dengan beberapa grup pesan IDs untuk alur kerja independen.

  3. Skenario kelompok tunggal

    • Untuk pemrosesan sekuensial yang ketat dari semua pesan dalam antrian FIFO, gunakan ID grup pesan tunggal untuk semua pesan dalam antrian.

Contoh untuk pemahaman yang lebih baik

Berikut ini adalah skenario praktis yang menggambarkan perilaku antrian FIFO di Amazon SQS.

  1. Skenario 1: ID grup tunggal

    • Produser mengirim lima pesan dengan grup pesan yang sama ID Grup A.

    • Seorang konsumen menerima pesan-pesan ini dalam urutan FIFO. Sampai konsumen menghapus pesan ini atau batas waktu visibilitas berakhir, tidak ada pesan tambahan dari Grup A yang diterima.

  2. Skenario 2: Beberapa grup IDs

    • Seorang produser mengirim lima pesan ke Grup A dan 5 ke Grup B.

    • Konsumen 1 memproses pesan dari Grup A, sementara Konsumen 2 memproses pesan dari Grup B. Hal ini memungkinkan pemrosesan paralel dengan urutan ketat yang dipertahankan dalam setiap grup.

  3. Skenario 3: Pengambilan Batch

    • Seorang produser mengirim tujuh pesan ke Grup A dan tiga ke Grup B.

    • Satu konsumen mengambil hingga 10 pesan. Jika antrian memungkinkan, itu mungkin kembali:

      • Tujuh pesan dari Grup A dan tiga dari Grup B (atau kurang jika lebih sedikit pesan yang tersedia dari satu grup).