Konsumen Idempoten: Memproses Sekali, Walau Diterima Berkali
Sistem pesan menjanjikan “setidaknya sekali” — yang berarti pesan bisa dikirim ulang. Konsumen yang tidak idempoten akan memproses dua kali, menggandakan efek. Idempotensi adalah tanggung jawab konsumen, bukan pengirim.
Identifikasi, lalu putuskan
Tiap pesan harus punya identitas (ID event). Konsumen mencatat ID yang sudah diproses; bila pesan dengan ID sama datang lagi, ia dilewati atau diperbarui, bukan diproses ulang dari awal.
Idempotensi bukan sekali proses
Idempotensi tidak berarti “hanya memproses sekali” — ia berarti “memproses ulang menghasilkan hasil sama”. Kadang itu artinya perbarui ke state yang sama; kadang lewati. Yang penting, efek akhir konsisten tanpa pandang berapa kali diproses.
Penyimpanan ID diproses
Catatan ID yang diproses perlu bertahan cukup lama untuk menangkap ulangan. Simpan dengan TTL atau kompak secara berkala. Tanpa catatan, konsumen tidak tahu mana yang ulangan — dan idempotensi hanyalah harapan.