View a markdown version of this page

Batas waktu visibilitas 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.

Batas waktu visibilitas Amazon SQS

Ketika Anda menerima pesan dari antrian Amazon SQS, pesan itu tetap dalam antrian tetapi menjadi sementara tidak terlihat oleh konsumen lain. Tembus pandang ini dikendalikan oleh batas waktu visibilitas, yang memastikan bahwa konsumen lain tidak dapat memproses pesan yang sama saat Anda mengerjakannya. Amazon SQS menawarkan dua opsi untuk menghapus pesan setelah diproses:

  • Penghapusan manual — Anda secara eksplisit menghapus pesan menggunakan DeleteMessage tindakan.

  • Penghapusan otomatis - Didukung dalam AWS SDK tertentu, pesan dihapus secara otomatis setelah pemrosesan berhasil, menyederhanakan alur kerja.

Grafik garis waktu yang menampilkan bagaimana permintaan diproses selama batas waktu visibilitas

Kasus penggunaan batas waktu visibilitas

Kelola tugas yang berjalan lama — Gunakan batas waktu visibilitas untuk menangani tugas yang memerlukan waktu pemrosesan yang diperpanjang. Tetapkan batas waktu visibilitas yang sesuai untuk pesan yang memerlukan waktu pemrosesan yang diperpanjang. Ini memastikan bahwa konsumen lain tidak menerima pesan yang sama saat sedang diproses, mencegah pekerjaan duplikat dan menjaga efisiensi sistem.

Menerapkan mekanisme coba ulang — Perpanjang batas waktu visibilitas secara terprogram untuk tugas yang gagal diselesaikan dalam batas waktu awal. Jika tugas gagal diselesaikan dalam batas waktu visibilitas awal, Anda dapat memperpanjang batas waktu secara terprogram. Ini memungkinkan sistem Anda untuk mencoba lagi memproses pesan tanpa terlihat oleh konsumen lain, meningkatkan toleransi kesalahan dan keandalan. Gabungkan dengan Dead-Letter Antrian (DLQ) untuk mengelola kegagalan persisten.

Koordinasi sistem terdistribusi — Gunakan batas waktu visibilitas SQS untuk mengoordinasikan tugas di seluruh sistem terdistribusi. Tetapkan batas waktu visibilitas yang selaras dengan waktu pemrosesan yang diharapkan untuk komponen yang berbeda. Ini membantu menjaga konsistensi dan mencegah kondisi balapan dalam arsitektur yang kompleks dan terdistribusi.

Mengoptimalkan pemanfaatan sumber daya — Sesuaikan batas waktu visibilitas SQS untuk mengoptimalkan pemanfaatan sumber daya dalam aplikasi Anda. Dengan menetapkan batas waktu yang tepat, Anda dapat memastikan bahwa pesan diproses secara efisien tanpa mengikat sumber daya yang tidak perlu. Hal ini mengarah pada kinerja sistem secara keseluruhan dan efektivitas biaya yang lebih baik.

Mengatur dan menyesuaikan batas waktu visibilitas

Waktu tunggu visibilitas dimulai segera setelah pesan dikirimkan kepada Anda. Selama periode ini, Anda diharapkan untuk memproses dan menghapus pesan. Jika Anda tidak menghapusnya sebelum batas waktu berakhir, pesan akan terlihat lagi dalam antrian dan dapat diambil oleh konsumen lain. Batas waktu visibilitas default untuk antrian adalah 30 detik, tetapi Anda dapat menyesuaikannya agar sesuai dengan waktu yang dibutuhkan aplikasi Anda untuk memproses dan menghapus pesan. Anda juga dapat mengatur batas waktu visibilitas tertentu untuk pesan individual tanpa mengubah pengaturan keseluruhan antrian. Gunakan ChangeMessageVisibility tindakan untuk memperpanjang atau mempersingkat batas waktu secara terprogram sesuai kebutuhan.

Dalam pesan penerbangan dan kuota

Di Amazon SQS, pesan dalam penerbangan adalah pesan yang telah diterima oleh konsumen tetapi belum dihapus. Untuk antrian standar, ada batas sekitar 120.000 pesan dalam penerbangan, tergantung pada lalu lintas antrian dan backlog pesan. Jika Anda mencapai batas ini, Amazon SQS mengembalikan OverLimit kesalahan, menunjukkan bahwa tidak ada pesan tambahan yang dapat diterima sampai beberapa pesan dalam penerbangan dihapus. Untuk antrian FIFO, batas bergantung pada grup pesan aktif.

  • Saat menggunakan polling pendek — Jika batas ini tercapai saat menggunakan polling pendek, Amazon SQS akan mengembalikan OverLimit kesalahan, menunjukkan bahwa tidak ada pesan tambahan yang dapat diterima sampai beberapa pesan dalam penerbangan dihapus.

  • Saat menggunakan polling panjang — Jika Anda menggunakan polling panjang, Amazon SQS tidak mengembalikan kesalahan saat batas pesan dalam penerbangan tercapai. Sebaliknya, ia tidak akan mengembalikan pesan baru sampai jumlah pesan dalam penerbangan turun di bawah batas.

Untuk mengelola pesan dalam penerbangan secara efektif:

  1. Penghapusan cepat — Hapus pesan (secara manual atau otomatis) setelah diproses untuk mengurangi jumlah dalam penerbangan.

  2. Pantau dengan CloudWatch — Atur alarm untuk jumlah dalam penerbangan yang tinggi untuk mencegah mencapai batas.

  3. Mendistribusikan beban — Jika Anda memproses pesan dengan volume tinggi, gunakan antrian atau konsumen tambahan untuk menyeimbangkan beban dan menghindari kemacetan.

  4. Minta kenaikan kuota — Kirim permintaan ke AWS Dukungan jika batas yang lebih tinggi diperlukan.

Memahami batas waktu visibilitas dalam antrian standar dan FIFO

Dalam antrian standar dan FIFO (First-In-First-Out), batas waktu visibilitas membantu mencegah beberapa konsumen memproses pesan yang sama secara bersamaan. Namun, karena model pengiriman Amazon SQS setidaknya sekali, tidak ada jaminan mutlak bahwa pesan tidak akan dikirimkan lebih dari sekali selama periode batas waktu visibilitas.

  • Antrian standar — Waktu tunggu visibilitas dalam antrian standar mencegah beberapa konsumen memproses pesan yang sama pada saat yang sama. Namun, karena model pengiriman paling sedikit sekali, Amazon SQS tidak menjamin bahwa pesan tidak akan dikirimkan lebih dari sekali dalam periode batas waktu visibilitas.

  • Antrian FIFO — Untuk antrian FIFO, pesan dengan ID grup pesan yang sama diproses dalam urutan yang ketat. Ketika pesan dengan ID grup pesan sedang dalam penerbangan, pesan berikutnya dalam grup tersebut tidak tersedia sampai pesan dalam penerbangan dihapus atau batas waktu visibilitas berakhir. Namun, ini tidak “mengunci” grup tanpa batas — setiap pesan diproses secara berurutan, dan hanya ketika setiap pesan dihapus atau terlihat lagi pesan berikutnya dalam grup tersebut akan tersedia untuk konsumen. Pendekatan ini memastikan pemrosesan yang teratur dalam grup tanpa mengunci grup tanpa perlu mengunci grup agar tidak mengirimkan pesan.

Penanganan kegagalan

Jika Anda tidak memproses dan menghapus pesan sebelum batas waktu visibilitas habis—karena kesalahan aplikasi, crash, atau masalah konektivitas—pesan akan terlihat lagi dalam antrian. Kemudian dapat diambil oleh konsumen yang sama atau yang berbeda untuk upaya pemrosesan lain. Ini memastikan bahwa pesan tidak hilang bahkan jika pemrosesan awal gagal. Namun, mengatur batas waktu visibilitas terlalu tinggi dapat menunda kemunculan kembali pesan yang belum diproses, berpotensi memperlambat percobaan ulang. Sangat penting untuk menetapkan batas waktu visibilitas yang sesuai berdasarkan waktu pemrosesan yang diharapkan untuk penanganan pesan tepat waktu.

Mengubah dan mengakhiri batas waktu visibilitas

Anda dapat mengubah atau menghentikan batas waktu visibilitas menggunakan ChangeMessageVisibility tindakan:

  • Mengubah batas waktu — Sesuaikan batas waktu visibilitas secara dinamis menggunakan. ChangeMessageVisibility Ini memungkinkan Anda untuk memperpanjang atau mengurangi durasi batas waktu agar sesuai dengan kebutuhan pemrosesan.

  • Mengakhiri batas waktu — Jika Anda memutuskan untuk tidak memproses pesan yang diterima, hentikan batas waktu visibilitasnya dengan menyetel VisibilityTimeout ke 0 detik melalui tindakan. ChangeMessageVisibility Ini segera membuat pesan tersedia untuk diproses oleh konsumen lain.

Praktik terbaik

Gunakan praktik terbaik berikut untuk mengelola batas waktu visibilitas di Amazon SQS, termasuk menyetel, menyesuaikan, dan memperpanjang batas waktu, serta menangani pesan yang belum diproses menggunakan An Dead-Letter trian (DLQ).

  • Mengatur dan menyesuaikan batas waktu. Mulailah dengan menyetel batas waktu visibilitas agar sesuai dengan waktu maksimum yang biasanya dibutuhkan aplikasi Anda untuk memproses dan menghapus pesan. Jika Anda tidak yakin tentang waktu pemrosesan yang tepat, mulailah dengan batas waktu yang lebih pendek (misalnya, 2 menit) dan perpanjang seperlunya. Terapkan mekanisme detak jantung untuk memperpanjang batas waktu visibilitas secara berkala, memastikan pesan tetap tidak terlihat sampai pemrosesan selesai. Ini meminimalkan penundaan dalam memproses ulang pesan yang tidak ditangani dan mencegah visibilitas dini.

  • Memperpanjang batas waktu dan menangani batas 12 Jam. Jika waktu pemrosesan bervariasi atau mungkin melebihi batas waktu yang ditetapkan sebelumnya, gunakan ChangeMessageVisibility tindakan untuk memperpanjang batas waktu visibilitas saat memproses pesan. Perlu diingat bahwa batas waktu visibilitas memiliki batas maksimum 12 jam sejak pesan pertama kali diterima. Memperpanjang batas waktu tidak mengatur ulang batas 12 jam ini. Jika pemrosesan Anda membutuhkan lebih banyak waktu daripada batas ini, pertimbangkan untuk menggunakan AWS Step Functions atau memecah tugas menjadi langkah-langkah yang lebih kecil.

  • Menangani pesan yang belum diproses. Untuk mengelola pesan yang gagal dalam beberapa upaya pemrosesan, konfigurasikan An Dead-Letter trian (DLQ). Ini memastikan bahwa pesan yang tidak dapat diproses setelah beberapa kali percobaan ulang ditangkap secara terpisah untuk analisis atau penanganan lebih lanjut, mencegahnya beredar berulang kali di antrian utama.