Bir işlem, iki kez çalıştırıldığında dünyayı bir kez çalıştırıldıktan sonraki haliyle bırakıyorsa idempotenttir. Bir dosyayı silmek idempotenttir. Bir mesaj göndermek değildir ve yinelenen mesaj hatalarının çoğu bu asimetride yaşar.
Gerçekten nerede gerekir
- Webhook işleyicilerinde, çünkü teslimat en az bir kezdir ve yeniden deneme normaldir.
- Zaman aşımından sonra yeniden denediğiniz her şeyde, çünkü zaman aşımı yazmanın yerine ulaşıp ulaşmadığını söylemez.
- Bir kuyruğun yeniden teslim edebileceği her şeyde, ki bu her kuyruktur.
Ucuza nasıl elde edilir
Üzerinde çoktan işlem yaptığınız kimliklerin bir tablosunu tutun ve işi yapmadan önce oraya bir benzersizlik kısıtıyla yazın. Yazma başarısız olursa bunu zaten biri ele almıştır. Tekniğin tamamı budur; hiçbir kitaplık gerektirmez ve bellekteki bir sürümün atlatamadığı ortadaki yeniden başlatmayı atlatır.
Önce yazın, sonra değil. Sonra yazmak, işi yapmakla yaptığınızı kaydetmek arasında bir pencere bırakır ve o pencerede yaşanan bir çökme, tablonun kapatması gereken durumun ta kendisidir.
Kimlik olarak ne kullanılmalı
Gönderen olayı nasıl adlandırıyorsa öyle, size bir ad veriyorsa. Vermiyorsa, olayı o olay yapan alanlardan bir anahtar kurun — hesap, sohbet ve mesaj, diyelim — ve özetini alın. Zaman damgasından türetilmiş bir anahtar, anahtar değildir: yeniden denemenin başkası olur.
İdempotentlik arayüzde yineleneni ayıklamak değildir. Bir yineleme ekrana ulaştığında ikinci mesajı çoktan göndermiş olursunuz. Denetim işleyicinin en başına, hiçbir şey dışarı çıkmadan önce konur.
İnsanların sorduğu sorular
Yapay zekâ ajanları kopyaların oluşma olasılığını artırır mı?
Artırabilir. İki kez istenen bir yapay zekâ ajanı iki kez gönderebilir; zaman aşımından sonra yeniden deneyen ise ilk denemenin işe yaradığını bilmeyebilir. Talimatlarına bir kural verin — yeniden göndermeden önce konuşmayı geri okuyun — ve gönderimleri bir kişinin onaylamasını sürdürün.
Bir proje odasındaki Uygula düğmesi idempotent midir?
Bir odadaki öneri yalnızca bir kez çalışır. Üzerinde ikinci kez Uygula'ya basmak hiçbir şeyi değiştirmez.