Nasıl çalışır?
Yazma işlemi yapan tümPOST endpoint’leri Idempotency-Key header’ını kabul eder. Aynı anahtarla gönderilen ikinci istek, ilk yanıtın birebir aynısını döner — yeni bir işlem oluşmaz.
Idempotent-Replayed: true header’ını ekler:
Anahtar kuralları
Anahtar tenant düzeyinde scope’lanır — farklı bir tenant aynı anahtarla başka bir
işlem oluşturabilir, bu beklenen davranıştır.
Senaryolar
Başarılı istek + tekrar deneme
Başarılı istek + tekrar deneme
- İstemci
POST /paymentsgönderir,Idempotency-Key: order-1001-payment. - Payven işlemi başarıyla yapar,
200 OKdöner. - İstemci network timeout aldığını sanıp aynı isteği aynı anahtarla tekrar gönderir.
- Payven yeni ödeme oluşturmaz; ilk yanıtı döner ve
Idempotent-Replayed: trueheader’ı ekler.
Eşzamanlı tekrar istek
Eşzamanlı tekrar istek
- İki istek aynı anda atılır, ikisinde de
Idempotency-Key: ABC123. - Birinci istek işlenmeye başlar — cache’e eklenir.
- İkinci istek cache’e ulaştığında ilk yanıt henüz hazırsa onu döner; değilse (race) backend’in deduplication mantığı devreye girer.
Aynı anahtar farklı payload ile
Aynı anahtar farklı payload ile
- İstemci
Idempotency-Key: ABC123ile15000kuruşluk ödeme atar. - Aynı anahtarla
25000kuruşluk ödeme atar. - Payven
409 Conflictdöner — anahtar farklı body için kullanılmış:
TTL süresi sonrası
TTL süresi sonrası
- Saklama süresi dolmuş bir anahtar (ödemeler için 24 saat, diğer endpoint’ler için 3 dakika).
- Aynı anahtar tekrar kullanılırsa yeni bir işlem oluşur — cache temizlenmiş.
- Bu nedenle uzun süreli retry mantığında her seferinde anahtar üretmek değil, üst seviye iş kimliğini (örn.
order_id) anahtar olarak kullanmak daha güvenlidir.