Skip to content

M11 · Bab 5± 50 menitDraf AI

Idempotensi dan Transactional Outbox

Tujuan belajar

  • Menjelaskan masalah dual write saat menyimpan ke database dan mengirim event ke broker sekaligus
  • Menerapkan transactional outbox — tabel outbox dalam transaksi yang sama, lalu relay/poller atau CDC
  • Membuat idempotent consumer dengan tabel processed_event dan unique constraint
  • Memakai header Idempotency-Key agar retry dari klien REST tidak menggandakan transaksi
  • Memahami kenapa at-least-once delivery selalu harus dipasangkan dengan idempotensi

Prasyarat: Apache Kafka dengan Spring

Kuis

5 soal · lulus bila minimal 70% benar

1.Service menyimpan pesanan ke PostgreSQL (commit sukses), lalu memanggil kafkaTemplate.send(...), tetapi aplikasi crash tepat sebelum pesan terkirim. Apa yang terjadi?
2.Apa output program ini? Set<String> s = new HashSet<>(); System.out.println(s.add("evt-1") + " " + s.add("evt-1"));
3.Consumer pembayaran kadang menambah saldo dua kali untuk event yang sama setelah rebalance consumer group. Perbaikan yang paling tepat?
4.Klien mobile mengirim POST /payments dengan header Idempotency-Key: 7f3a..., koneksi timeout, lalu klien mengulang request dengan key yang sama. Perilaku server yang benar?
5.Kenapa relay outbox yang berjalan di beberapa instance memakai SELECT ... FOR UPDATE SKIP LOCKED?

Jawab semua soal dulu (0/5)