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 senaryolar, oversell testi gibi repodaki API entegrasyon testlerinin bir parçasıdır. Üretim dağıtım iş akışı bu testlerin geçmesini zorunlu kılar. Staging dağıtımı ise aynı test kapısını içermez; dağıtımın tamamlanması tek başına bu senaryoların yeniden doğrulandığı anlamına gelmez.
Nerede doğrularsınız
Bu senaryoların test kaynağı repodadır. Platformun diğer yeteneklerine ilişkin doğrulama durumlarını Yetenek kanıtı sayfasında inceleyebilirsiniz. Test sonuçları yalnızca çalıştırıldıkları senaryoları doğrular; tek başına canlı mağaza kullanımını kanıtlamaz.
Kanıt matrisinin tamamını görün
Yetenek Kanıtı →