Aufgabenplaner in Node.js: Überblick und Anwendungsbeispiele
In der modernen Backend-Entwicklung besteht häufig die Notwendigkeit, Code nach einem Zeitplan auszuführen: E-Mail-Newsletter versenden, Cache leeren, Datenbank-Backups erstellen oder aggregierte Daten aktualisieren. Im Node.js-Ökosystem gibt es für diese Zwecke mehrere ausgereifte Bibliotheken. In diesem Artikel betrachten wir drei grundlegende Ansätze zur Aufgabenplanung: klassisches Cron, flexible Zeitplanung und Aufgabenwarteschlangen.
1. node-cron — klassisches Cron für JavaScript
node-cron ist eine minimalistische Bibliothek, die es ermöglicht, Funktionen nach standardmäßigen Cron-Ausdrücken auszuführen. Sie eignet sich ideal für einfache periodische Aufgaben (jede Minute, jede Stunde, jeden Tag um 3:00 Uhr).
Installation:
npm install node-cronBeispiel einer Aufgabe, die jede Minute ausgeführt wird:
const cron = require('node-cron');
cron.schedule('* * * * *', () => { console.log('Aufgabe wird jede Minute ausgeführt');});Struktur des Cron-Ausdrucks: Sekunde Minute Stunde Tag_des_Monats Monat Tag_der_Woche (bei node-cron ist die Sekunde optional).
Beispiele für Ausdrücke:
'0 0 * * *'— jeden Tag um Mitternacht'*/5 * * * *'— alle 5 Minuten'0 9-18 * * 1-5'— jede Stunde von 9 bis 18 Uhr an Werktagen'30 3 * * 0'— jeden Sonntag um 3:30 Uhr
Die Bibliothek unterstützt die Validierung von Ausdrücken sowie das Starten/Stoppen von Aufgaben:
const task = cron.schedule('*/10 * * * *', () => { // Aufgabe alle 10 Minuten});
// Aufgabe stoppentask.stop();
// Wieder aufnehmentask.start();
// Prüfen, ob die Aufgabe aktiv istconsole.log(task.isStarted()); // true/falseWann verwenden: für einfache periodische Aktionen, bei denen keine Zustandsspeicherung oder Fehlerbehandlung erforderlich ist.
2. node-schedule — flexible Zeitplanung mit Unterstützung für wiederkehrende Regeln
node-schedule ist eine leistungsfähigere Alternative, die es ermöglicht, Zeitpläne nicht nur über Cron, sondern auch über JavaScript-Objekte mit expliziter Angabe von Daten, Wochentagen und Uhrzeiten zu definieren.
Installation:
npm install node-scheduleBeispiel mit einem Cron-Ausdruck:
const schedule = require('node-schedule');
const job = schedule.scheduleJob('*/5 * * * *', () => { console.log('Wird alle 5 Minuten ausgeführt');});Der Hauptvorteil ist die Möglichkeit, den Zeitplan über ein Objekt festzulegen:
const job = schedule.scheduleJob({ hour: 14, minute: 30, dayOfWeek: [1, 3, 5] // Montag, Mittwoch, Freitag}, () => { console.log('14:30 Uhr an Werktagen');});Es kann auch eine einmalige Aufgabe für ein bestimmtes Datum geplant werden:
const date = new Date(2025, 11, 31, 23, 59, 0);
schedule.scheduleJob(date, () => { console.log('Das neue Jahr ist da!');});Die Bibliothek unterstützt das Abbrechen von Aufgaben und die Überprüfung des nächsten Ausführungszeitpunkts:
// Aufgabe abbrechenjob.cancel();
// Nächstes Ausführungsdatum abrufenconsole.log(job.nextInvocation()); // Date objectWann verwenden: wenn eine genaue Zeitsteuerung, die Kombination von Regeln oder einmalige Aufgaben erforderlich sind.
3. Bull — Aufgabenwarteschlangen mit Planung und Wiederholungsversuchen
Bull ist ein vollwertiges Warteschlangensystem auf Basis von Redis, das einen leistungsstarken Planer enthält. Bull ermöglicht nicht nur das Zurückstellen von Aufgaben, sondern auch die Verwaltung von Wiederholungen, Prioritäten und paralleler Ausführung.
Installation:
npm install bullBasisbeispiel einer Warteschlange mit einer verzögerten Aufgabe:
const Queue = require('bull');
const emailQueue = new Queue('email', { redis: { host: 'localhost', port: 63 Auch in der Bibliothek
Generierung von PDF-Berichten in Go (Golang): Bibliotheken und Beispiele
Winston für JavaScript (Node.js): Vollständige Anleitung mit Beispielen
gRPC in Rust: Die Bibliotheken Tonic und Grpc-rs mit Beispielen
Arbeit mit Apache Kafka in Swift (iOS/macOS): Bibliotheken und Beispiele
CLI-Framework für C++: cppcli — Erstellung von Konsolenanwendungen