Cron tabanlı e-posta kontrolleri neden kontrolden çıkar
Bir işi birkaç saatte bir çalıştırmak kağıt üzerinde basit görünür, ancak üretim ortamındaki gerçeklik karmaşıktır. Son çalıştırma sahipsiz mesajlar bırakabilir; yeniden denemeler birikebilir; yavaş bir işçi (worker), on beş dakika önce gelmiş bir mesajı çekebilir. Bu artıklar, çoğu betiğin dayandığı o saf “en son e-posta kazanır” kuralını bozar.
Yerel testler geçer çünkü temiz bir gelen kutusu ve öngörülebilir zamanlama ile başlarlar. Üretim ortamında aynı kod yanlış mesajı alabilir, bir uyarıyı sessizce düşürebilir veya aynı anda birden fazla bildirim gönderebilir. Ekipler sorunu genellikle keyfi gecikmelerle yamalar, ancak bir gecikme yalnızca yarış durumunu (race condition) maskeler ve yüksek yük altında veya e-posta gecikmesindeki bir değişiklikte kısa sürede çöker.
Lease kavramı: bir gelen kutusunu tek kullanımlık bir varlığa dönüştürmek
Bir gelen kutusu kiralaması (lease), her cron çalıştırmasının uyması gereken küçük bir sözleşmedir:
- Özel sahiplik – bir çalıştırma bir gelen kutusu (veya içindeki benzersiz bir ad alanı/namespace) alır.
- Zamanla sınırlı – lease, bir başlangıç zamanı ve bir son kullanma zamanı kaydeder.
- Etiket doğrulaması – beklenen her e-posta, işin kontrol ettiği bir etiket taşır.
- Bayat mesaj koruması – iş, konusu eşleşse bile lease penceresinin dışında kalan tüm e-postaları görmezden gelir.
İş artık “bir e-posta geldi mi?” diye sormak yerine, “e-postam lease pencerem sırasında mı geldi?” diye sorar. Bu deği
