Varsayılan olarak güvenli mutation'lar
Bazı mutation'lar, sağladığınız sabit bir tanımlayıcıya göre upsert işlemi gerçekleştirdiği için doğal olarak idempotent'tir. Bunları aynı girdiyle çağırdığınızda sonuç aynı olur — yinelenen kayıt oluşturma riski yoktur.
- Benzersiz, satıcı tarafından sağlanan bir tanımlayıcı alan mutation'lar (örneğin bir siparişin
externalId'si), tekrar çağrıldığında yeni bir kayıt oluşturmak yerine mevcut kaydı döndürür. - Salt okunur işlemler (sorgular) her zaman yeniden denemeye karşı güvenlidir.
Oluşturduğunuz kaynağa kendi sabit tanımlayıcınızı ekleyebiliyorsanız, bu yolu tercih edin.
Doğal olarak idempotent olmayan mutation'lar için desenler
Satıcı tarafından sağlanan bir anahtar olmadan kaynak oluşturan mutation'lar için, bunları kendi tarafınızda en fazla bir kez çalışan işlemler olarak ele alın:
- İsteği göndermeden önce kalıcı hale getirin. Ağ çağrısından önce kendi veritabanınıza bir satır yazın (durum
pending). - Mutation'ı gönderin. Başarılı olduğunda, döndürülen kaynak kimliğini bekleyen satırınıza karşı kaydedin (durum
committed). - Bir ağ hatasında körlemesine yeniden denemeyin. Kaynağın oluşturulup oluşturulmadığını belirlemek için Zonos Graph'ı sorgulayın (örneğin hesabınız için son birkaç dakikada oluşturulan kaynakları listeleyerek veya ilişkilendirebileceğiniz bir kaynağı sorgulayarak). Yalnızca kaynağın mevcut olmadığını doğrulayabiliyorsanız yeniden deneyin.
- Kendi veritabanınızda, isteği temsil eden iş anahtarı her ne olursa olsun benzersiz bir kısıtlama kullanın; böylece kendi uygulamanızdan gelen yinelenen bir yeniden deneme çift gönderime yol açamaz.
Webhook teslimi en az bir kezdir
Zonos webhook'larını tükettiğinizde, işleyicilerinizi idempotent olacak şekilde tasarlayın — aynı olay birden fazla kez iletilebilir. Olay kimliğine göre tekilleştirin. Olay kimliği alanı için Webhook'lar sayfasına bakın.
Platform nereye gidiyor
Temel platform, faturalama yeniden denemeleri için idempotency anahtarı akışlarını üretimde halihazırda çalıştırmaktadır: anahtar, bir yeniden deneme girişimini kapsamlandırır ve yinelenen ödeme işlemcisi çağrılarını önler. Aynı deseni, müşteriye yönelik oluşturma mutation'larda isteğe bağlı bir idempotencyKey argümanı olarak sunmak için çalışıyoruz. Sağlandığında, Graph aynı anahtarla yapılan sonraki her çağrı için bir saklama penceresi içinde orijinal yanıtı döndürecektir. Bu özellik genel kullanıma açıldığında bu sayfa güncellenecektir.
Müşteriye yönelik mutation'larda standartlaştırılmış idempotency anahtarları entegrasyonunuzu engelliyorsa, desteğe başvurun.
Durum
İdempotency anahtarı desteği bugün itibarıyla kısmidir. Seçili dahili yeniden deneme mutation'lar — örneğin order-billing yeniden deneme ve refund-billing yeniden deneme akışları — halihazırda bir idempotency anahtarı kabul eder ve bunu sonraki ödeme işlemcisi çağrılarını tekilleştirmek için kullanır. Zonos Graph üzerinde tüm müşteriye yönelik oluşturma mutation'larda henüz standartlaştırılmış bir
idempotencyKeyargümanı bulunmamaktadır; bu özellik yol haritasında yer almaktadır. Bu özellik sunulana kadar, mutation'ları yeniden denemeye karşı güvenli tutmak için aşağıdaki desenleri kullanın.