Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

Otomasi Alur Kerja: Trigger, Kondisi, dan Penanganan Gagal

Pelajaran 11 dari 14

Idempotensi, antrean gagal, log, dan uji skenario gagal

Kunci idempotensi dan deduplikasi event

Setelah pelajaran ini kamu bisa memilih kunci idempotensi yang terikat proses bisnis dan memproses event berulang sehingga setiap pesanan tercatat satu kali.

±13 menitDiperiksa 7 Okt 2026

Materi

Antrean dan webhook mengirim pesan dengan jaminan setidaknya sekali (at-least-once). Azure Architecture Center menjelaskan akibatnya: penerima bisa menerima pesan yang sama lebih dari sekali, sehingga logika penerima harus idempoten, yaitu memproses pesan yang sama berkali-kali memberi hasil yang sama, tanpa catatan ganda atau tagihan berulang. Event ganda juga lahir dari coba ulang: pengirim yang kena timeout mengirim lagi, padahal kiriman pertama sudah sampai. Kelas HTTP dan API sudah membahas metode yang idempoten menurut sifatnya; di sini idempotensi dibangun dengan kunci.

AWS Builders' Library memakai pengenal permintaan unik dari pemanggil: permintaan dengan pengenal yang sama dianggap duplikat. Azure Service Bus mencatat MessageId selama jendela waktu tertentu dan membuang kiriman yang MessageId-nya sudah tercatat; dokumentasinya menyebut pengenal yang terikat proses bisnis membuat pengulangan bisa diramalkan. GitHub mempertahankan nilai header X-GitHub-Delivery yang sama saat sebuah kiriman diulang.

// Pembayaran tagihan air: kunci = nomor tagihan
const sudah = new Set();
const dicatat = [];
for (const e of [{ tagihan: "PDAM-0912" }, { tagihan: "PDAM-0913" }, { tagihan: "PDAM-0912" }]) {
  if (sudah.has(e.tagihan)) continue; // kiriman ulang, lewati
  dicatat.push(e.tagihan);            // efeknya dulu
  sudah.add(e.tagihan);               // lalu kuncinya
}
// dicatat: ["PDAM-0912", "PDAM-0913"]

Pilih kunci yang sama setiap kali kejadian yang sama dikirim ulang: nomor pesanan atau nomor tagihan, bukan nomor acak yang dibuat ulang di tiap percobaan. AWS menambahkan syarat penting: mencatat kunci dan menjalankan efeknya harus terjadi bersama. Kunci yang tercatat tanpa efeknya membuat percobaan ulang dibuang sebagai duplikat padahal pesanan belum tersimpan.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 3

Alur Dapur Sari memakai nomor pesanan sebagai kunci idempotensi. Dalam satu jam masuk lima event: e1 (DS-601), e2 (DS-602), e3 (DS-601, dikirim ulang setelah timeout), e4 (DS-603), dan e5 (DS-602, tombol kirim ditekan dua kali). Berapa pesanan yang tercatat?

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke