Sobes.tech
Junior — Middle

Güvenilir mesaj iletimi sağlamak için Transactional Outbox mekanizmasıyla çalışma deneyiminiz var mı?

sobes.tech yapay zeka

AI'dan gelen yanıt

Evet, Transactional Outbox mekanizması, dağıtılmış sistemlerde hizmetler arasında güvenilir mesaj iletimini sağlamak için kullanılır.

Mekaniğin özü:

  • İş mantığı işlemi sırasında doğrudan mesaj göndermek yerine, mesaj özel bir tabloya (outbox) aynı işlemde kaydedilir.
  • İşlem başarılı bir şekilde tamamlandıktan sonra, ayrı bir süreç veya hizmet outbox'tan mesajları okur ve kuyruk veya alıcıya gönderir.

Bu, mesajın kaybolmamasını sağlar, hatta iletim kesintiye uğrarsa bile, veritabanı durumu ile mesajlaşma sistemi arasındaki senkronizasyon sorununu ortadan kaldırır.

Entity Framework kullanan C# örneği şöyle olabilir:

using(var transaction = context.Database.BeginTransaction())
{
    // Ana işlem
    context.Orders.Add(newOrder);

    // Mesajı outbox'a ekle
    context.OutboxMessages.Add(new OutboxMessage { Payload = serializedMessage });

    context.SaveChanges();
    transaction.Commit();
}

// Ayrı bir süreç OutboxMessages'tan okur ve mesajları gönderir