CodeBlanks Logo Icon CodeBlanks

Consumer

Bull consumer/process ile iş işleme öğrenirsin.

Consumer

Consumer, kuyruktan mesaj alıp işleyen taraftır. Bull'da queue.process((job) => { ... }) ile consumer tanımlarsın. Her mesaj için callback çağrılır; callback Promise döndürürse Bull iş bitmesini bekler.

Örnek: kuyruk.process((job) => { console.log("İşleniyor: " + job.data.aksiyon); return Promise.resolve(); });. Mesaj kuyruktan alınınca job parametresi ile callback çağrılır. job.data mesajın verisidir. Callback bir Promise döndürürse; resolve iş başarılı, reject iş başarısız demektir. Başarısız işler retry yöntemine göre tekrar denenir. Birden çok consumer kuyruğu paralel işleyebilir.

job.data ve Promise

Consumer callback'i job parametresi alır. job.data mesajın verisidir. Callback bir Promise döndürmeli; resolve başarılı, reject başarısız demektir.

Örnek: kuyruk.process(async (job) => { const kullanici = job.data.kullanici; await sendMail(kullanici); });. async fonksiyon otomatik Promise döndürür; bu yüzden return'e gerek yok. sendMail başarılı olursa iş tamamlanır, hata atarsa Bull işi başarısız sayar ve retry yöntemini uygular. job.attemptsMade kaç kez denendiğini verir. Bull { concurrency: 5 } ile paralelliği sınırlar.

Uygulama Consumer tanımla

Aşağıdaki kuyruk nesnesini kullan. kuyruk.process(async (job) => { console.log("İş: " + job.data.aksiyon); }) ile consumer tanımla. console.log ile "Consumer hazır" yaz.

Başlangıç kodu

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

// kuyruk.process ile consumer tanımla
// buraya yaz

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

Örnek çözüm

index.js
const Bull = require("bull");
const kuyruk = new Bull("is-kuyrugu");
kuyruk.process(async (job) => {
  console.log("İş: " + job.data.aksiyon);
});
console.log("Consumer hazır");

Beklenen çıktı

Consumer hazır

Soru ve cevaplar

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

1 queue.process ne yapar?

index.js
kuyruk.process((job) => { ... })
  • Mesajı kuyruğa ekler
  • Mesajları alıp işler Doğru cevap
  • Redis'i kapatır
  • Yeni kuyruk oluşturur

Açıklama: queue.process mesajları alıp işler.

2 job.data erişimini tamamla

Soru
const kullanici = job.____.kullanici;
Cevap
const kullanici = job.data.kullanici;

Açıklama: job.data ile mesaj verisine erişilir.

3 Parçayı rolüne eşle

Kavram Anlamı
queue.process Consumer tanımlar
job.data Mesajın verisi
Promise resolve İş başarılı
Promise reject İş başarısız

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