

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

# Deduplikasi dan pengelompokan pesan Amazon SQS
<a name="best-practices-message-deduplication"></a>

Topik ini memberikan praktik terbaik untuk memastikan pemrosesan pesan yang konsisten di Amazon SQS. Ini menjelaskan cara menggunakan:
+ [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html#API_SendMessage_RequestSyntax](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html#API_SendMessage_RequestSyntax)untuk mencegah duplikat pesan dalam antrian FIFO.
+ [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)untuk mengelola pemesanan pesan dalam grup pesan yang berbeda.

****Topik****
+ [Menghindari pemrosesan pesan yang tidak konsisten di Amazon SQS](avoiding-inconsistent-message-processing.md)
+ [Menggunakan ID deduplikasi pesan](using-messagededuplicationid-property.md)
+ [Menggunakan ID grup pesan](using-messagegroupid-property.md)
+ [Menggunakan ID percobaan permintaan terima](using-receiverequestattemptid-request-parameter.md)

# Menghindari pemrosesan pesan yang tidak konsisten di Amazon SQS
<a name="avoiding-inconsistent-message-processing"></a>

Karena Amazon SQS adalah sistem terdistribusi, adalah mungkin bagi konsumen untuk tidak menerima pesan bahkan ketika Amazon SQS menandai pesan sebagai terkirim saat berhasil kembali dari [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)panggilan metode API. Dalam hal ini, Amazon SQS mencatat pesan yang dikirimkan setidaknya sekali, meskipun konsumen belum pernah menerimanya. Karena tidak ada upaya tambahan untuk mengirimkan pesan dalam kondisi ini, kami tidak menyarankan menyetel jumlah penerimaan maksimum menjadi 1 untuk [antrian huruf mati](sqs-dead-letter-queues.md).

# Menggunakan ID deduplikasi pesan di Amazon SQS
<a name="using-messagededuplicationid-property"></a>

[https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)adalah token yang hanya digunakan dalam antrian Amazon SQS FIFO untuk mencegah pengiriman pesan duplikat. Ini memastikan bahwa dalam jendela deduplikasi 5 menit, hanya satu contoh pesan dengan ID deduplikasi yang sama diproses dan dikirim.

Jika Amazon SQS telah menerima pesan dengan ID deduplikasi tertentu, pesan berikutnya dengan ID yang sama akan diakui tetapi tidak dikirimkan ke konsumen.

**catatan**  
Amazon SQS terus melacak ID deduplikasi bahkan setelah pesan diterima dan dihapus.

**Topics**
+ [Kapan memberikan ID deduplikasi pesan di Amazon SQS](providing-message-deduplication-id.md)
+ [Mengaktifkan deduplikasi untuk sistem produsen/konsumen tunggal di Amazon SQS](single-producer-single-consumer.md)
+ [Skenario pemulihan pemadaman di Amazon SQS](designing-for-outage-recovery-scenarios.md)
+ [Mengonfigurasi batas waktu visibilitas di Amazon SQS](working-with-visibility-timeouts.md)

# Kapan memberikan ID deduplikasi pesan di Amazon SQS
<a name="providing-message-deduplication-id"></a>

Produser harus menentukan ID deduplikasi pesan dalam skenario berikut:
+ Saat mengirim badan pesan identik yang harus diperlakukan sebagai unik.
+ Saat mengirim pesan dengan konten yang sama tetapi atribut pesan yang berbeda, memastikan setiap pesan diproses secara terpisah.
+ Saat mengirim pesan dengan konten yang berbeda (misalnya, penghitung coba lagi di badan pesan) tetapi mengharuskan Amazon SQS untuk mengenalinya sebagai duplikat.

# Mengaktifkan deduplikasi untuk sistem produsen/konsumen tunggal di Amazon SQS
<a name="single-producer-single-consumer"></a>

Jika Anda memiliki satu produsen dan satu konsumen, dan pesannya unik karena menyertakan ID pesan khusus aplikasi di badan, ikuti praktik terbaik berikut:
+ Aktifkan deduplikasi berbasis konten untuk antrian (setiap pesan Anda memiliki badan yang unik). Produser dapat menghilangkan ID deduplikasi pesan.
+ Saat deduplikasi berbasis konten diaktifkan untuk antrean Amazon SQS FIFO, dan pesan dikirim dengan ID deduplikasi, ID deduplikasi akan mengganti ID deduplikasi berbasis konten yang dihasilkan. [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)
+ Meskipun konsumen tidak diharuskan untuk memberikan ID percobaan permintaan terima untuk setiap permintaan, ini adalah praktik terbaik karena memungkinkan urutan coba gagal untuk dijalankan lebih cepat.
+ Anda dapat mencoba lagi mengirim atau menerima permintaan karena tidak mengganggu urutan pesan dalam antrian FIFO.

# Skenario pemulihan pemadaman di Amazon SQS
<a name="designing-for-outage-recovery-scenarios"></a>

Proses deduplikasi dalam antrian FIFO sensitif terhadap waktu. Saat merancang aplikasi Anda, pastikan bahwa produsen dan konsumen dapat pulih dari pemadaman klien atau jaringan tanpa menimbulkan duplikat atau kegagalan pemrosesan.

Pertimbangan produsen
+ Amazon SQS memberlakukan jendela deduplikasi 5 menit.
+ Jika produser mencoba ulang [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)permintaan setelah 5 menit, Amazon SQS memperlakukannya sebagai pesan baru, berpotensi membuat duplikat.

Pertimbangan konsumen
+ Jika konsumen gagal memproses pesan sebelum batas waktu visibilitas berakhir, konsumen lain dapat menerima dan memprosesnya, yang mengarah ke pemrosesan duplikat.
+ Sesuaikan batas waktu visibilitas berdasarkan waktu pemrosesan aplikasi Anda.
+ Gunakan [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ChangeMessageVisibility.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ChangeMessageVisibility.html)API untuk memperpanjang batas waktu saat pesan masih diproses.
+ Jika pesan berulang kali gagal diproses, arahkan ke [antrian huruf mati (DLQ)](sqs-dead-letter-queues.md) alih-alih membiarkannya diproses ulang tanpa batas waktu.
+ Produsen harus menyadari interval deduplikasi antrian. Amazon SQS memiliki interval deduplikasi 5 menit. Mencoba kembali `SendMessage` permintaan setelah interval deduplikasi berakhir dapat memperkenalkan pesan duplikat ke dalam antrian. Misalnya, perangkat seluler di dalam mobil mengirim pesan yang pesanannya penting. Jika mobil kehilangan konektivitas seluler untuk jangka waktu tertentu sebelum menerima pengakuan, mencoba kembali permintaan setelah mendapatkan kembali konektivitas seluler dapat membuat duplikat.
+ Konsumen harus memiliki batas waktu visibilitas yang meminimalkan risiko tidak dapat memproses pesan sebelum batas waktu visibilitas berakhir. Anda dapat memperpanjang batas waktu visibilitas saat pesan sedang diproses dengan memanggil tindakan. `ChangeMessageVisibility` Namun, jika batas waktu visibilitas berakhir, konsumen lain dapat segera mulai memproses pesan, menyebabkan pesan diproses beberapa kali. Untuk menghindari skenario ini, konfigurasikan [antrian huruf mati](sqs-dead-letter-queues.md).

# Mengonfigurasi batas waktu visibilitas di Amazon SQS
<a name="working-with-visibility-timeouts"></a>

Untuk memastikan pemrosesan pesan yang andal, atur batas waktu visibilitas menjadi lebih lama dari batas waktu baca AWS SDK. Ini berlaku saat menggunakan [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)API dengan polling pendek dan polling panjang. Batas waktu visibilitas yang lebih lama mencegah pesan tersedia bagi konsumen lain sebelum permintaan asli selesai, mengurangi risiko pemrosesan duplikat.

# Menggunakan ID grup pesan dengan Amazon SQS FIFO Queues
<a name="using-messagegroupid-property"></a>

Dalam antrian FIFO (First-In-First-Out), [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)adalah atribut yang mengatur pesan ke dalam grup yang berbeda. Pesan dalam grup pesan yang sama selalu diproses satu per satu, dalam urutan yang ketat, memastikan bahwa tidak ada dua pesan dari grup yang sama yang diproses secara bersamaan. Dalam antrian standar, menggunakan `MessageGroupId` memungkinkan antrian yang [adil](sqs-fair-queues.md). Jika pemesanan ketat diperlukan, gunakan antrian FIFO. 

**Topics**
+ [Menginterleaving beberapa grup pesan yang dipesan di Amazon SQS](interleaving-multiple-ordered-message-groups.md)
+ [Mencegah pemrosesan duplikat dalam sistem multi-produsen/konsumen di Amazon SQS](avoding-processing-duplicates-in-multiple-producer-consumer-system.md)
+ [Hindari backlog pesan besar dengan ID grup pesan yang sama di Amazon SQS](avoid-backlog-with-the-same-message-group-id.md)
+ [Hindari menggunakan kembali ID grup pesan yang sama dengan antrian virtual di Amazon SQS](avoiding-reusing-message-group-id-with-virtual-queues.md)

# Menginterleaving beberapa grup pesan yang dipesan di Amazon SQS
<a name="interleaving-multiple-ordered-message-groups"></a>

Untuk menginterleave beberapa grup pesan yang diurutkan dalam satu antrian FIFO, tetapkan a [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)ke setiap grup (misalnya, data sesi untuk pengguna yang berbeda). Hal ini memungkinkan beberapa konsumen untuk membaca dari antrian secara bersamaan sambil memastikan bahwa pesan dalam grup yang sama diproses secara berurutan.

Ketika pesan dengan spesifik `MessageGroupId` sedang diproses dan tidak terlihat, tidak ada konsumen lain yang dapat memproses pesan dari grup yang sama hingga batas waktu visibilitas berakhir atau pesan dihapus.

# Mencegah pemrosesan duplikat dalam sistem multi-produsen/konsumen di Amazon SQS
<a name="avoding-processing-duplicates-in-multiple-producer-consumer-system"></a>

Dalam sistem throughput tinggi, latensi rendah di mana pemesanan pesan bukan prioritas, produsen dapat menetapkan unik untuk setiap pesan. [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html) Ini memastikan bahwa antrian Amazon SQS FIFO menghilangkan duplikat, bahkan dalam pengaturan multi-produsen/multi-konsumen. Meskipun pendekatan ini mencegah pesan duplikat, itu tidak menjamin pemesanan pesan karena setiap pesan diperlakukan sebagai grup independennya sendiri.

Dalam sistem apa pun dengan banyak produsen dan konsumen, selalu ada risiko pengiriman duplikat. Jika konsumen gagal memproses pesan sebelum batas waktu visibilitas berakhir, Amazon SQS membuat pesan tersebut tersedia kembali, berpotensi memungkinkan konsumen lain untuk mengambilnya. Untuk mengurangi hal ini, pastikan pengaturan batas waktu pemberitahuan dan visibilitas pesan yang tepat berdasarkan waktu pemrosesan.

# Hindari backlog pesan besar dengan ID grup pesan yang sama di Amazon SQS
<a name="avoid-backlog-with-the-same-message-group-id"></a>

Antrian FIFO mendukung maksimal 120.000 pesan dalam penerbangan (pesan yang diterima oleh konsumen tetapi belum dihapus). Jika batas ini tercapai, Amazon SQS tidak mengembalikan kesalahan, tetapi pemrosesan mungkin terpengaruh. Anda dapat meminta peningkatan di luar batas ini dengan menghubungi [AWS Support](https://docs.aws.amazon.com/awssupport/latest/user/create-service-quota-increase.html).

Antrian FIFO memindai 120.000 pesan pertama untuk menentukan grup pesan yang tersedia. Jika backlog besar terbentuk dalam satu grup pesan, pesan dari grup lain yang dikirim nanti akan tetap diblokir hingga backlog diproses.

**catatan**  
Backlog pesan dapat terjadi ketika konsumen berulang kali gagal memproses pesan. Ini bisa disebabkan oleh masalah konten pesan atau kegagalan sisi konsumen. Untuk mencegah penundaan pemrosesan pesan, konfigurasikan [antrian huruf mati](sqs-dead-letter-queues.md) untuk memindahkan pesan yang belum diproses setelah beberapa upaya gagal. Ini memastikan bahwa pesan lain dalam grup pesan yang sama dapat diproses, mencegah kemacetan sistem.

# Hindari menggunakan kembali ID grup pesan yang sama dengan antrian virtual di Amazon SQS
<a name="avoiding-reusing-message-group-id-with-virtual-queues"></a>

Saat menggunakan antrian virtual dengan antrian host bersama, hindari menggunakan kembali antrian virtual yang berbeda [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html). Jika beberapa antrian virtual berbagi antrian host yang sama dan berisi pesan yang sama`MessageGroupId`, pesan tersebut dapat memblokir satu sama lain, mencegah pemrosesan yang efisien. Untuk memastikan pemrosesan pesan yang lancar, tetapkan `MessageGroupId` nilai unik untuk pesan dalam antrian virtual yang berbeda.

# Menggunakan ID percobaan permintaan terima Amazon SQS
<a name="using-receiverequestattemptid-request-parameter"></a>

ID percobaan permintaan terima adalah token unik yang digunakan untuk menghapus duplikasi [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)panggilan di Amazon SQS. Selama pemadaman jaringan atau masalah konektivitas antara aplikasi Anda dan Amazon SQS, praktik terbaik adalah:
+ Berikan ID percobaan permintaan terima saat melakukan `ReceiveMessage` panggilan.
+ Coba lagi menggunakan ID percobaan permintaan terima yang sama jika operasi gagal.