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
| Sıra | Olay | İş | Kaynak sürümü | Durum |
|---|---|---|---|---|
| 1 | E1 | J1 | 4 | Tamamlandı |
| 2 | E2 | J1 | 3 | İşleniyor |
| 3 | E1 | J1 | 4 | Tamamlandı |
| 4 | E3 | J2 | 1 | Bekliyor |
| 5 | E4 | J1 | 4 | Başarısız |
| 6 | E5 | J1 | Bilinmiyor | İş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.
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.
| Sıra | Karar | Yerel etkisi |
|---|---|---|
| 1 | Uygula | J1: sürüm 4 / Tamamlandı |
| 2 | Eski olayı atla | J1 sürüm 4 korunur |
| 3 | Tekrarı etkisiz bırak | Yeni durum veya yeni iş oluşmaz |
| 4 | Uygula | J2: sürüm 1 / Bekliyor |
| 5 | Çelişkiyi incelemeye al | J1 son bilinen kayıt korunur; doğrulama gerekir |
| 6 | Eksik sürümü incelemeye al | J1 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.
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.
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:
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