Furkan KapukayaYazılım geliştirme
Backend, API ve Veritabanı2 dk okuma

Mesaj Kuyruğu Nedir? Uygulamaları Birbirinden Bağımsız Çalıştırmak

Mesaj kuyruklarının mantığı, senkron ve asenkron iletişim farkı, kullanım alanları, en az bir kez teslim, ölü mektup kuyruğu, RabbitMQ ve bulut seçenekleri ile lisans notları.

Bir sipariş geldiğinde fatura kesmek, stok düşmek, kargo kaydı açmak ve müşteriye e-posta göndermek gerekiyor. Bunların hepsini kullanıcı beklerken tek seferde yapmak hem yavaştır hem de birinde hata olursa tüm işlem çöker. Mesaj kuyrukları, bu işleri birbirinden ayırır.

Temel mantık

  • Üretici (producer): "Sipariş oluşturuldu" mesajını kuyruğa bırakır ve işine devam eder.
  • Kuyruk: Mesajı güvenle saklar.
  • Tüketici (consumer): Mesajı alır ve işler: fatura, kargo, e-posta.

Kullanıcı siparişin alındığını anında görür; diğer işler arka planda yürür.

Faydaları

  1. Hız: Kullanıcı yavaş işlemleri beklemez.
  2. Dayanıklılık: E-posta servisi geçici olarak çökse bile mesajlar kuyrukta bekler, servis düzelince işlenir.
  3. Ölçeklenebilirlik: Yoğun dönemlerde tüketici sayısı artırılabilir.
  4. Bağımsızlık: Sistemler birbirinin iç yapısını bilmeden haberleşir.

Kullanım alanları

Önemli kavramlar

En az bir kez teslim

Çoğu kuyruk sistemi, mesajın kaybolmamasını garanti etmek için aynı mesajı birden fazla kez teslim edebilir. Bu yüzden tüketiciler idempotent yazılmalıdır.

Ölü mektup kuyruğu

Defalarca denenip işlenemeyen mesajlar ayrı bir kuyruğa alınır. Böylece hatalı bir mesaj tüm sistemi tıkamaz ve sonradan incelenebilir.

Sıralama

Bazı işlerde mesajların sırası önemlidir. Kuyruk seçimi ve tasarım bu ihtiyaca göre yapılmalıdır.

Seçenekler

  • RabbitMQ: Yaygın kullanılan, açık kaynaklı (Mozilla Public License 2.0) bir mesaj aracısı.
  • Bulut kuyrukları: Bulut sağlayıcılarının yönetilen kuyruk hizmetleri; kurulum ve bakım yükü yoktur.
  • Veritabanı tabanlı kuyruk: Küçük ölçekli sistemlerde mevcut veritabanında basit bir iş tablosu bile yeterli olabilir.
  • Redis: Basit kuyruk ihtiyaçları için kullanılabilir; lisans notları için Redis yazımıza bakın.

Ne zaman gerekmez?

Tek bir uygulama ve az sayıda arka plan işi için kuyruk eklemek gereksiz karmaşıklık getirebilir. .NET'te basit arka plan işleri için BackgroundService çoğu zaman yeterlidir.

Sık sorulan sorular

Kuyruk kullanınca veriler kaybolabilir mi?

Doğru yapılandırılmış kalıcı kuyruklar mesajları güvenle saklar. Önemli olan, tüketicinin mesajı başarıyla işledikten sonra onaylamasıdır.

.NET ile hangi kütüphaneler kullanılır?

Kuyruk sistemlerinin resmî .NET istemcileri ve üzerlerine kurulu daha üst seviye kütüphaneler bulunur. Kütüphanelerin lisanslarını da seçim sırasında kontrol edin.

Sonuç

Mesaj kuyrukları, büyüyen sistemlerde hızı ve dayanıklılığı birlikte sağlar. Mimari değerlendirme için iletişime geçebilirsiniz.