CodeBlanks Logo Icon CodeBlanks

Producer

Bull producer ile iş kuyruğa ekleme öğrenirsin.

Producer

Producer, mesajı kuyruğa ekleyen taraftır. Bull'da queue.add(veri) ile mesaj eklersin. Mesaj, kuyrukta sıraya girer ve bir consumer tarafından işlenmeyi bekler.

Örnek: queue.add({ kullanici: "Ayşe", aksiyon: "email" });. Bu çağrı hemen döner; producer e-posta gönderimini beklemez. Mesaj Redis'te saklanır; consumer hazır olunca alınır. queue.add opsiyonel ikinci parametre de alır: { priority: 1, delay: 5000 } gibi. Bu, mesajın önceliğini veya gecikme süresini belirler. Producer genellikle bir API üç noktası veya bir zamanlayıcıdır. Producer'ın tek görevi mesajı kuyruğa bırakmaktır; işin kendisini yapmaz.

Producer desenleri

Producer genellikle bir HTTP üç noktasında çağrılır. İstek gelir, producer mesajı kuyruğa bırakır ve hemen yanıt döner. Uzun süren işi arka plana iterek kullanıcı deneyimini hızlandırır.

Örnek: app.post("/kayit", async (req, res) => { await queue.add({ kullanici: req.body.ad }); res.json({ mesaj: "Kayıt alındı" }); });. Kullanıcı kayıt olur olmaz Kayıt alındı yanıtını alır; e-posta arka planda gönderilir. Bu desen, kullanıcıyı bekleterek yanıt süresini kısaltır. Producer, hızlı ve hafif olmalıdır; ağır işi consumer'a bırakmalıdır. Birden çok producer aynı kuyruğa yazabilir; kuyruk mesajları sırayla saklar.

Uygulama Producer çağrısı yaz

Aşağıdaki kuyruk nesnesini kullan. kuyruk.add({ aksiyon: "email", kullanici: "Ayşe" }) ile mesaj ekle (await kullan). Sonra console.log ile "Mesaj eklendi" yaz.

Başlangıç kodu

index.js
const Bull = require("bull");
const kuyruk = new Bull("is-kuyrugu");

// async fonksiyon içinde kuyruğa mesaj ekle
// buraya yaz

// "Mesaj eklendi" yazdır
// buraya yaz

Örnek çözüm

index.js
const Bull = require("bull");
const kuyruk = new Bull("is-kuyrugu");
async function mesajEkle() {
  await kuyruk.add({ aksiyon: "email", kullanici: "Ayşe" });
}
mesajEkle();
console.log("Mesaj eklendi");

Beklenen çıktı

Mesaj eklendi

Soru ve cevaplar

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

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

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

Açıklama: Aksiyon email olarak ayarlanır.

2 Parçayı rolüne eşle

Kavram Anlamı
queue.add Mesajı kuyruğa ekler
priority Mesaj önceliği
delay Gecikme süresi
producer Mesajı bırakan taraf

3 Producer ne zaman yanıt döner?

index.js
await queue.add(data); res.json({ok:true});
  • Redis kapandıktan sonra
  • Mesaj işlendikten sonra
  • Mesajı kuyruğa bıraktıktan hemen sonra Doğru cevap
  • E-posta gönderildikten sonra

Açıklama: Producer mesajı bırakınca hemen döner.

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