Message queue nedir?
- Node.js kursu
- İleri seviye
- Ders 55/83
- 5 dk
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
// 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
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?
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
queue.____({ task: "email" });
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 |