En son gelen mesaj en yeni durum olmayabilir

Ajanınız işin tamamlandığını gösterdi. Bir dakika sonra aynı iş yeniden “işleniyor” durumuna döndü. Araç işi geri almamış olabilir; daha eski bir bildirim ağda gecikip sonradan ulaşmış olabilir. Durum ekranını her gelen mesajla değiştiren tasarım, ulaşma sırasını işin gerçek değişim sırası sanır. Bu ayrımı yapmadan ajana yeniden deneme veya kullanıcıya yeni sonuç bildirme kararı verdirmek tutarsız davranışlar doğurabilir.

Bu yazıdaki J1 ve J2 işleri, olay kimlikleri ve sürümler sentetiktir. Gerçek bir araç çalıştırılmıyor. Özgün sözleşmemizde her olay, ilgili işin tam durum görüntüsünü taşır; değişiklik parçası değildir. Sürüm sayısı yalnızca aynı iş içinde artar. J1’in sürüm 4’ü ile J2’nin sürüm 1’i karşılaştırılarak hangisinin daha güncel olduğu söylenemez. Her iş kendi durum kaydına sahiptir.

AWS’nin S3 olay açıklaması, bildirimlerin oluşma sırasıyla ulaşmasının garanti edilmediğini ve sıralama bilgisinin aynı nesne anahtarı için kullanılabildiğini belirtir. Buradaki ajan örneği S3 uygulaması değildir. S3’ün onaltılık sequencer alanı yerine, kolay izlenebilen tamsayı iş sürümleri içeren ayrı bir eğitim sözleşmesi kullanıyoruz. Bu iki alanı ürünler arasında doğrudan eşdeğer saymayın.Kaynak: AWS — S3 event message structure

Geliş sırasını ve kaynak sürümünü birlikte tutun

Sentetik ulaşma günlüğü · başlangıçta yerel durum yok
SıraOlayİşKaynak sürümüDurum
1E1J14Tamamlandı
2E2J13İşleniyor
3E1J14Tamamlandı
4E3J21Bekliyor
5E4J14Başarısız
6E5J1Bilinmiyorİşleniyor

Üçüncü satır E1’in aynı içerikle tekrarıdır. Beşinci satır ise farklı E4 kimliğiyle, aynı J1 sürümü için farklı durum bildirir. Bunlar aynı hata değildir. Birini tekrar olarak etkisiz kılabiliriz; diğerini kaynak çelişkisi olarak incelemeye almalıyız. Olay kimliği aynı olduğu halde içerik değişseydi onu da sıradan tekrar diye geçemezdik. Kimlik ve içerik birlikte kontrol edilir.

Kopyalanabilir olay değerlendirmesi
E1–E5 ulaşma günlüğünü işle. Her olay tam durum görüntüsüdür. İş başına ayrı kaynak sürümü tut. Daha düşük sürümü güncel durumun yerine yazma. Aynı olay kimliği ve aynı içerik tekrarını etkisiz bırak. Aynı iş/sürüm için çelişen durum varsa birini rastgele seçme; inceleme aç. Sürüm bilinmiyorsa ulaşma sırasından sürüm uydurma. Çıktı: altı satırlık karar, son bilinen iş durumları ve açık incelemeler. Yeni iş veya dış bildirim başlatma.
Elle hazırlanmış işleme kararları
SıraKararYerel etkisi
1UygulaJ1: sürüm 4 / Tamamlandı
2Eski olayı atlaJ1 sürüm 4 korunur
3Tekrarı etkisiz bırakYeni durum veya yeni iş oluşmaz
4UygulaJ2: sürüm 1 / Bekliyor
5Çelişkiyi incelemeye alJ1 son bilinen kayıt korunur; doğrulama gerekir
6Eksik sürümü incelemeye alJ1 güncel durumu bu olayla değiştirilmez

Tamamlandı kaydı korunur; çelişki de görünür kalır

İki olay uygulanmış, bir eski olay atlanmış, bir tekrar etkisiz kalmış ve iki olay incelemeye alınmıştır. Altı alınan bildirim bu dört kategoriyle eksiksiz açıklanır. Olay günlüğünden atlanan satırları silmiyoruz; yalnızca güncel duruma etkilerini sınırlandırıyoruz. Daha sonra yaşanan tutarsızlığı araştıran kişi, eski olayın neden görünümü değiştirmediğini bu kayıttan anlayabilir.

Açıklama amacıyla hazırlanmış son görünüm
J1: son bilinen kaynak sürümü 4, durum Tamamlandı. E4 aynı sürümde Başarısız dediği için kaynak doğrulaması açık. E5 sürümü bilinmediği için ayrıca bekliyor. Bu aşamada koşulsuz “her şey tamamlandı” bildirimi üretme.
J2: kaynak sürümü 1, durum Bekliyor; J1’den bağımsız.
Yeni dış işlem: 0.

Çelişki olduğunda eski kaydı korumak, çelişkiyi yok saymak anlamına gelmez. Kullanıcıya gösterilen durum doğrulama beklediğini belirtmelidir. Yetkili bir kaynak sorgusu veya sorumlu incelemesi, hangi kaydın geçerli olduğunu belirlemelidir. Ajan yalnızca daha sonra geldiği için “Başarısız”ı, daha iyi göründüğü için “Tamamlandı”yı seçmemelidir. Sürümün aynı olması, burada kaynak sözleşmesinin araştırılması gerektiğini gösterir.

Sözleşmemizin tam durum görüntüsü olması da önemlidir. İlk görülen sürüm 4, önceki alanların bütün güncel değerlerini içerdiği için başlangıç olarak kullanılabilir. Olaylar yalnızca artış veya azaltış gibi değişiklik parçaları taşısaydı aradaki sürümleri atlamak veri kaybettirebilirdi. Böyle bir sistemde eksik olayları tamamlama veya kaynak durumunu yeniden okuma gereksinimi vardır. Örneğin kuralını olay biçimini doğrulamadan başka araca taşımayın.

  • Sıralama karşılaştırması aynı iş kimliği içinde mi yapılıyor?
  • Tam durum ile değişiklik olayı ayrımı açık mı?
  • Aynı kimlikli olayın içeriği gerçekten aynı mı?
  • Aynı sürümdeki çelişki görünür bir inceleme oluşturuyor mu?
  • Bilinmeyen sürüm, son ulaşan olay olduğu için kabul ediliyor mu?

Kaynak sürüm 5’i doğrularsa

Alıştırmada yetkili kaynak sorgusunun J1 için sürüm 5 ve Tamamlandı durumunu açıkça doğruladığını varsayın. Kaynak sorumlusu E4 ve E5’in bu güncel görüntüyle çözüldüğünü kaydetmiş olsun. Yerel durum, inceleme geçmişi ve yeni işlem sayısı için beklenen sonucu yazın. Bu sorguyu yeni bir işi başlatan komutla karıştırmayın.

Alıştırmanın cevap anahtarı
J1 sürüm 5 / Tamamlandı olarak güncellenir. E4 ve E5 incelemeleri yeni kaynak kanıtına bağlanarak kapatılır; eski olay günlüğü korunur. J2 değişmez. Yeni dış işlem sayısı yine 0’dır; kaynak durumunu okumak işi yeniden yürütmek değildir.

Kendi entegrasyonunuzda yalnızca normal sırayı denemeyin. İki olayı yer değiştirin, birini aynı içerikle yeniden verin ve bir sürümü bilinmiyor yapın. Son görünümü işlem günlüğüyle karşılaştırın. Teslimatınız, olayların hepsini almış olmanın yanında eski bir bildirimin yeni durumu geri çevirmediğini de göstermelidir.

Çok sayıda iş için tek bir genel “son sürüm” alanı tutmak bu örneği bozar. J1 sürüm 4 işlendi diye J2 sürüm 1’i eski sayarsanız ikinci iş hiç görünmez. Test paketine en az iki farklı iş eklemek, bu yanlış genellemeyi küçük bir veri kümesinde yakalamanızı sağlar.

Kaynaklar ve doğrulama

  • AWS — S3 event message structure

    Olayların oluşma sırasıyla ulaşmayabilmesi ve sıralama bilgisinin aynı nesne anahtarında karşılaştırılması; örneğin tamsayı sürümleri ayrı bir sözleşmedir.

    Erişim ve kontrol:

İlgili okumalar

AI Ajanları ve İş Akışı Otomasyonu

AI Ajanları ve İş Akışı Otomasyonu eğitimi talebinizde durumu farklı sistemlerden bildirimle güncellenen bir işi tarif edebilirsiniz. Olay kimliği ve sürüm örneği, uygulama kapsamını belirlemek için yeterli bir başlangıçtır.

  • Kuruma özel planlanır