Consumer
- Node.js kursu
- İleri seviye
- Ders 58/83
- 5 dk
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
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
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?
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
const kullanici = job.____.kullanici;
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 |