Bir iş akışı, uzak bir sistemde bir kayıt oluşturur, ardından yanıt beklerken zaman aşımına uğrar. Yürütme işlemi başarısız olarak işaretlenir. Bir operatör “yeniden dene” düğmesine basar ve uzak sistem aynı oluşturma isteğini tekrar alır.
Bu akıştaki hiçbir adım, olağan dışı bir kesinti gerektirmez. Bu, bir ağ üzerinden işlerin yürütülmesinin doğal bir sonucudur. n8n otomasyonlarını tasarlarken, tekrar oynatma davranışını iş akışının iş mantığının bir parçası olarak değerlendiririm.
İşleme istikrarlı bir kimlik verin
Bir yürütme tanımlayıcısı, hangi denemenin gerçekleştirildiğini gösterir. Ancak bu, mutlaka iş işlemini tanımlamaz. İş akışı yeniden başlarsa, yeni yürütme yine de aynı siparişi dışa aktarmaya çalışıyor olabilir.
Kiracı, kaynak kayıt, eylem ve ilgili sürümden oluşan bir işlem anahtarı tercih ederim. Örneğin, bir siparişin belirli bir revizyonunun dışa aktarılması, yeniden denemeler boyunca aynı anahtara sahip olmalı; daha sonraki bir revizyonun dışa aktarılması ise farklı bir anahtara sahip olmalıdır.
Anahtar, eşzamanlılık koşullarında benzersizlik kuralını uygulayabilen bir sistemde saklanmalıdır. Bir değerin mevcut olup olmadığını kontrol etmek ve ardından onu eklemek işlemlerini ayrı adımlarda gerçekleştirmek, iki iş parçacığı aynı anda başladığında bir yarış durumu yaratır.
Yan etkilerin sınırlarını belirleyin
Saf dönüşümler genellikle kolayca tekrarlanabilir. Mesaj göndermek, fatura oluşturmak veya stok durumunu değiştirmek gibi işlemler için daha dikkatli bir sınır belirlenmesi gerekir.
Tercih ettiğim sıra şudur: amaçlanan işlemi kaydetmek, bu işlemi atomik olarak talep etmek, destekleniyorsa bir idempotans anahtarı kullanarak harici hizmeti çağırmak ve sağlayıcının referansını kaydetmek. Zaman aşımı, uzlaştırma gerektiren belirsiz bir işlem bırakır; bu durum otomatik olarak bir başarısızlık kanıtı olarak değerlendirilmemelidir.
Hizmet sağlayıcı idempotans özelliğini desteklemiyorsa, harici bir referansla sorgulama yapmak için güvenilir bir yol ararım. Her iki seçenek de mevcut değilse, iş akışında bir inceleme kuyruğuna ihtiyaç duyulabilir. İkinci bir kör deneme, özellikle de eylemin kolayca geri alınamadığı durumlarda, bir iş kararıdır.
Giderilemeyen hataları, düzeltilebilir verilerden ayırın
Geçici bir bağlantı hatası, daha sonra düzeltilebilir. Eksik bir müşteri kimliği ise genellikle düzeltilemez. Süresi dolmuş bir kimlik bilgisi için bir operatörün müdahalesi gerekebilir; hız sınırlaması durumunda ise bir süre beklemek ve eşzamanlılık sayısını azaltmak gerekebilir.
| Başarısızlık | İş akışı yanıtı |
|---|---|
| Geçici hizmet hatası | Artan gecikme ve titreşim ile sınırlı yeniden deneme |
| Geçersiz kaynak kaydı | Okunabilir bir doğrulama gerekçesiyle karantina |
| Belirsiz harici yazma | İşlem referansını kullanarak mutabakatı gerçekleştirin |
| Eksik izin | Etkilenen işlemi durdurun ve yapılandırma onarımı isteyin |
Yeniden deneme politikası için toplam bir zaman bütçesi de gereklidir. Günlerce yeniden deneme yapan bir otomasyon, iş bağlamı değiştiği halde bir eylemi uygulayabilir. Eski işlerin bir son kullanma tarihi veya yeni bir uygunluk kontrolü olmalıdır.
Devam edebilmek için yeterli durum bilgisini koruyun
Önemli iş sınırlarında kalıcı kontrol noktaları oluşturuyorum. Bir aktarım başarılı olmuş ancak bildirim başarısız olmuşsa, kurtarma işlemi bildirim üzerinde yoğunlaşmalıdır. İş akışının tamamını tetikleyicisinden itibaren yeniden çalıştırmak, yalnızca önceki her eylemin güvenle tekrarlanabileceği durumlarda uygun olur.
Her kontrol noktası, bekleyen, devam eden, tamamlanmış, başarısız ve durumu belirsiz işleri birbirinden ayırt etmelidir. Devam eden bir işlem için ayrıca, çöken bir işçinin bu işlemi sonsuza kadar elinde tutmaması için bir kiralama veya kurtarma kuralı gereklidir.
Günlük kayıtları, işlem anahtarını, deneme numarasını, harici referansı ve iş akışı sürümünü içermelidir. Kontrol edilen bir referans soruşturmaya yardımcı olabileceği durumlarda, her hata mesajına müşterinin verilerinin tamamını eklemekten kaçınıyorum.
Uygunsuz zamanlamayı test edin
Bir otomasyona güvenmeden önce, ana dış eyleminin hemen öncesinde ve hemen sonrasında bir arıza simülasyonu yaparım. Ayrıca aynı girişi iki kez çalıştırır ve iki denemeyi eşzamanlı olarak başlatırım.
Bu kontroller, sadece bir başka başarılı denemeden daha fazlasını ortaya koymaktadır. Yararlı bir iş akışı, halihazırda nelerin yapıldığını, nelerin hâlâ belirsiz olduğunu ve operatörün hangi eylemi güvenle tekrarlayabileceğini açıklayabilir.
25 Eylül 2026 tarihinde güncellenmiştir.