Dasar keputusan
Notifikasi tiba bukan berarti tindakan bisnis selesai. Rancang untuk pengulangan dan urutan berbeda. Stripe mendokumentasikan perilaku itu; periksa kontrak penyedia lain tersendiri.
Contoh penerapan
Peristiwa hipotetis “faktur dibayar” divalidasi, disimpan bersama ID dan pekerjaan, lalu diakui setelah diterima secara persisten. Pengulangan dikenali tanpa kredit kedua. Kegagalan berikutnya menyimpan status untuk dicoba ulang.
Pilihan yang perlu dibandingkan
Inbox mencatat peristiwa masuk; outbox mencatat pekerjaan dari transaksi sendiri. Keduanya memisahkan niat persisten dari jaringan. Rekonsiliasi menemukan perbedaan meski tidak ada pemberitahuan gagal.
Titik kegagalan
Jangan menyimpan ID hanya di memori atau menandai selesai sebelum perubahan commit. Tangani peristiwa lama dengan aturan status atau versi. Beri jeda kegagalan sementara dan tinjau data invalid.
Pisahkan identitas pengiriman dan bisnis
Simpan identitas peristiwa serta referensi invoice. Beberapa peristiwa dapat mengenai invoice sama; memblokir semuanya setelah pertama akan membuang perubahan sah. Mengulang satu peristiwa juga tidak boleh menggandakan kredit. Tentukan kunci penerimaan dan batasan status bisnis, lalu komit pemeriksaannya bersama perubahan nyata.
Verifikasi pengirim melalui mekanisme terdokumentasi sebelum menerima. Jika tanda tangan memakai body mentah, simpan byte asli daripada menyusun ulang JSON. Rahasia tanda tangan tidak masuk log atau kode. Verifikasi, pengulangan, dan retensi bergantung pada penyedia; menyalin integrasi lain dapat memeriksa hal yang salah.
Buktikan pemulihan pada saat sulit
Hentikan worker setelah menerima, setelah menerima secara permanen, dan saat mengubah catatan bisnis. Periksa inbox serta rekaman setelah mulai ulang. Efek eksternal mungkin diterima sebelum hasil lokal disimpan. Gunakan idempotensi atau pencarian rekonsiliasi jika tersedia; penanda lokal bukan jaminan pengiriman tepat sekali.
Pengulangan terkendali menjaga identitas dan alasan. Data yang tetap tidak valid masuk jalur pengecualian, bukan percobaan tanpa akhir. Rekonsiliasi membandingkan catatan resmi pada rentang tertentu. Sepakati pembaca laporan, penanganan mendesak, dan bukti penutupan. Antrean tanpa pemilik bisa menyimpan data sempurna sementara tidak ada yang tahu pekerjaan berhenti.
Sebelum memulai pekerjaan
Apakah pengulangan hanya berefek sekali? Apakah worker pulih setelah jatuh? Bisakah satu catatan diselidiki dan diulang? Jadikan demonstrasi itu penerimaan integrasi.