Junior — Middle
Mesajların etibarlı şəkildə çatdırılmasını təmin etmək üçün Transactional Outbox mexanizmi ilə işləmə təcrübəniz varmı?
sobes.tech Süni İntellekt
AI-dan cavab
Bəli, Transactional Outbox mexanizmi, paylanmış sistemlərdə xidmətlər arasında etibarlı mesaj ötürməsini təmin etmək üçün istifadə olunur.
Mexanizmin mahiyyəti:
- Biznes məntiqi işlənərkən mesaj birbaşa göndərilmək əvəzinə, xüsusi cədvələ (outbox) qeyd olunur və bu, əsas əməliyyatla eyni tranzaksiyada həyata keçirilir.
- Uğurlu tranzaksiya tamamlandıqdan sonra, ayrı bir proses və ya xidmət outbox-dan mesajları oxuyur və onları növbəyə və ya alıcıya göndərir.
Bu, mesajın itirilməməsini təmin edir, hətta göndərmə dayandırılsa belə, verilənlər bazasının vəziyyəti ilə mesaj mübadiləsi sistemi arasında sinxronizasiya problemini aradan qaldırır.
C# dilində Entity Framework istifadə edərək nümunə belə görünə bilər:
using(var transaction = context.Database.BeginTransaction())
{
// Əsas əməliyyat
context.Orders.Add(newOrder);
// Mesajı outbox-a əlavə et
context.OutboxMessages.Add(new OutboxMessage { Payload = serializedMessage });
context.SaveChanges();
transaction.Commit();
}
// Ayrı bir proses OutboxMessages-dan oxuyur və mesajları göndərir