Aufgabenwarteschlangen für JavaScript (Node.js): Bull, Bee-Queue, Kue

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Aufgabenwarteschlangen für JavaScript (Node.js): Bull, Bee-Queue und Kue



In modernen Webanwendungen mit Node.js besteht häufig die Notwendigkeit, langwierige oder ressourcenintensive Operationen asynchron auszuführen, ohne den Hauptthread der Anfrageverarbeitung zu blockieren. Dazu werden Aufgabenwarteschlangen (Job Queues) verwendet. Sie ermöglichen es, die Ausführung von Arbeiten zu verschieben, die Last auf mehrere Prozesse zu verteilen und bei Fehlern eine erneute Verarbeitung sicherzustellen.



In diesem Artikel betrachten wir drei beliebte Bibliotheken für die Arbeit mit Aufgabenwarteschlangen in Node.js: Bull, Bee-Queue und Kue. Alle verwenden Redis als Nachrichtenbroker, was hohe Leistung und Zuverlässigkeit gewährleistet.



1. Bull – die beliebteste und funktionsreichste Bibliothek



Bull ist eine moderne, schnelle und zuverlässige Aufgabenwarteschlange für Node.js, die auf Redis basiert. Sie unterstützt alle wichtigen Funktionen: verzögerte Aufgaben, Wiederholungsversuche, Prioritäten, Pause/Fortsetzen sowie Überwachung über eine integrierte Benutzeroberfläche.



Installation

npm install bull


Basisbeispiel

const Queue = require('bull');

// Warteschlange erstellenconst emailQueue = new Queue('email', 'redis://127.0.0.1:6379');

// Aufgaben-HandleremailQueue.process(async (job) => { const { to, subject } = job.data; console.log(`Sende E-Mail an ${to}: ${subject}`); // Senden simulieren await new Promise(resolve => setTimeout(resolve, 1000)); return { success: true };});

// Aufgabe hinzufügenemailQueue.add({ to: 'user@example.com', subject: 'Hallo von Bull!'}, { attempts: 3, // bei Fehler 3 Mal wiederholen delay: 5000, // um 5 Sekunden verzögern priority: 1 // hohe Priorität});


Hauptfunktionen von Bull

  • Wiederholungsversuche – automatische Wiederholung bei Fehlern mit konfigurierbarer Verzögerung.
  • Prioritäten – Aufgaben mit hoher Priorität werden zuerst bearbeitet.
  • Verzögerte Aufgaben – eine Verzögerung vor der Ausführung kann festgelegt werden.
  • Pause und Fortsetzen – Anhalten der Warteschlange für Wartungsarbeiten.
  • Überwachung – integrierte Weboberfläche bull-board.
  • Ereignisse – Abonnieren von Ereignissen (completed, failed, progress).


Fortgeschrittenes Beispiel mit Ereignissen

const Queue = require('bull');const myQueue = new Queue('myQueue');

myQueue.on('completed', (job, result) => { console.log(`Aufgabe ${job.id} abgeschlossen:`, result);});

myQueue.on('failed', (job, err) => { console.error(`Aufgabe ${job.id} fehlgeschlagen: ${err.message}`);});

myQueue.process(async (job) => { // Fortschritt await job.progress(50); // Ausführung return { status: 'ok' };});


Bull wird für Projekte empfohlen, die maximale Flexibilität und vorgefertigte Überwachungstools erfordern.



2. Bee-Queue – eine leichte und schnelle Alternative



Bee-Queue ist eine minimalistische Aufgabenwarteschlange, die auf Leistung ausgelegt ist. Sie ist einfacher als Bull, bietet aber dennoch alle grundlegenden Funktionen: verzögerte Aufgaben, Wiederholungen, Prioritäten und Skalierung.



Installation

npm install bee-queue


Anwendungsbeispiel

const Queue = require('bee-queue');

const imageQueue = new Queue('images', { redis: { host: '127.0.0.1', port: 6379 }});

// HandlerimageQueue.process(async (job) => { const { filename } = job.data; console.log(`Verarbeite Bild: ${filename}`); // Verarbeitung simulieren await new Promise(resolve => setTimeout(resolve, 2000)); return { processed: true };});

// Aufgabe hinzufügenimageQueue.createJob({ filename: 'photo.jpg'}) .retries(2) .del

Empfehlungen