CodeBlanks Logo Icon CodeBlanks

Message queue nedir?

Message queue kavramını öğrenirsin.

Message queue nedir?

Bir message queue, mesajları sırayla tutan ve tüketiciye ileten bir aracıdır (broker). Üretici (producer) mesajı kuyruğa bırakır; tüketici (consumer) hazır olunca mesajı alır ve işler. Bu, üretici ile tüketiciyi birbirinden bağımsızlaştırır.

Örnek: kullanıcı kaydı sırasında e-posta gönderme işini kuyruğa bırakırsın. Kullanıcı anında yanıt alır; e-posta arka planda gönderilir. Yaygın araçlar: RabbitMQ, Redis, AWS SQS. Node.js'te Bull, Redis üstüne kurulu popüler bir kuyruk kütüphanesidir. Kuyruklar uzun süren işleri (e-posta, rapor, dosya işleme) asenkron yapar; sistemin yanıt süresini kısa tutar. Bu grupta Bull ile kuyruk kurmayı, producer/consumer yazmayı ve retry/backoff desenlerini öğreneceksin.

Producer ve consumer

Producer mesajı kuyruğa ekler. Consumer mesajı kuyruktan alır ve işler. Bu iki rol birbirinden bağımsız çalışır; birinin yavaşlaması diğerini durdurmaz.

Örnek: bir API üç noktası (producer) queue.add({ task: "email" }) ile e-posta görevini kuyruğa ekler. Ayrı bir çalışan süreç (consumer) queue.process((job) => sendMail(job.data)) ile görevi alır ve e-postayı gönderir. Producer, consumer'ın işini bitirmesini beklemez; kuyruk mesajı saklar. Consumer çökerse mesaj kuyrukta kalır; consumer yeniden başlayınca işler. Bu dayanıklılık, kuyrukların en büyük avantajıdır. Birden çok consumer kuyruğu paralel işleyebilir.

Uygulama Kuyruk iskeletini tanımla

Bull modülünü require ile içe aktar. new Bull("email-kuyrugu") ile bir kuyruk oluştur. console.log ile "Kuyruk hazır" yaz.

Başlangıç kodu

index.js
// Bull modülünü içe aktar
// buraya yaz

// "email-kuyrugu" adında yeni bir kuyruk oluştur
// buraya yaz

// "Kuyruk hazır" yazdır
// buraya yaz

Örnek çözüm

index.js
const Bull = require("Bull");
const queue = new Bull("email-kuyrugu");
console.log("Kuyruk hazır");

Beklenen çıktı

Kuyruk hazır

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Message queue ne işe yarar?

index.js
producer → queue → consumer
  • HTTP isteklerini yanıtlar
  • Veritabanı yedeği alır
  • Mesajları sırayla tüketiciye iletir Doğru cevap
  • Kullanıcı arayüzü çizer

Açıklama: Kuyruk mesajları sırayla tüketiciye iletir.

2 queue.add çağrısını tamamla

Soru
queue.____({ task: "email" });
Cevap
queue.add({ task: "email" });

Açıklama: queue.add ile mesaj eklenir.

3 Kavramı rolüne eşle

Kavram Anlamı
producer Mesajı kuyruğa ekler
consumer Mesajı alır ve işler
queue Mesajları sırayla tutar
Bull Redis üstüne kuyruk kütüphanesi

İleri seviye bölümündeki tüm dersler