← Blog
Ürün Güncellemeleri

Kuyruk aynı mesajı iki kez gönderdi — sipariş yine tek kaldı

Ticibu Ekibi · 15 Eylül 2026 · 5 dk okuma

Cloudflare Queues — ve neredeyse tüm üretim kuyrukları — mesajı en az bir kez teslim eder. Tüketici işini bitirip onay vermeden çökerse, ağ kesilirse ya da zaman aşımına uğrarsa mesaj geri döner ve tekrar işlenir. Bu bir hata değil, tasarımın kendisidir: "kesin bir kez" teslimat dağıtık sistemlerde yoktur. Doğru soru şudur: mesaj ikinci kez geldiğinde ne olur?

Naif tüketici neden tehlikelidir

Bir sipariş iptal mesajını düşünün. Tüketici "stoku iade et + müşteri istatistiğini düşür" der. Mesaj tekrar gelirse naif kod aynı iadeyi ikinci kez yapar — stok şişer, müşteri istatistiği eksiye gider. Kuyruk sağlıklı çalıştığı için bozulan sistemdir; dışarıdan bakana "her şey yeşil" görünür.

Ticibu'da tasarım: mesaj değil, durum gerçektir

Sipariş işleyicimiz mesajı "işlenecek komut" olarak değil, "duruma ulaşma işareti" olarak okur:

  • Müşteri istatistikleri türetilmiştir. Toplam sipariş/harcama, mesajı sayarak değil siparişler tablosundan yeniden hesaplanarak yazılır. Mesaj ister bir kez ister beş kez gelsin, sonuç aynı toplamdır.
  • Stok iadesi ledger üzerinden ilerler. İade, hareket tablosuna atomik bir claim ile yazılır — aynı sipariş için ikinci iade talebi tabloda yer bulamaz. Mesaj tekrarlansa bile fiziksel olarak tek iade mümkündür.
  • Yarım kalan iş kendini toparlar. İşleyici iade adımının ortasında çökerse, tekrar gelen mesaj "bekleyen" kaydı bulur ve kaldığı yerden tamamlar — atlamaz, baştan başlamaz.

Test neyi kanıtlıyor

Redelivery entegrasyon testimiz kuyruğun en kötü gününü simüle eder — aynı sipariş mesajını arka arkaya yeniden işler. Ölçülen sonuç:

  • Tekrar teslimatta sıfır çift stok iadesi,
  • Müşteri istatistiklerinde çift sayım yok — iptal otomatik düşüyor,
  • Crash sonrası yarım kalan iade, ikinci işlemede tamamlanıyor.

Bu test de oversell testi gibi her dağıtımda koşar; staging'e canlı deploy'da 3/3 yeşil kaldı. İddia metin değil, assertion'dır.

Nerede doğrularsınız

Yetenek kanıtı sayfasında bu yetenek kod sütununda doğrulanmış görünür; test kaynağı repodadır. Standart aynı: kodlanmış olmak, kanıtlanmış olmak değildir — testin her dağıtımda yeşil kalmasıdır.

Kanıt matrisinin tamamını görün

Yetenek Kanıtı →