Workers
Aktualisiert am 27. Oktober 2026
Workers
Ein Worker ist ein Dienst ohne Port oder Domain: ein Hintergrundprozess, der eine Warteschlange verarbeitet, geplante Aufgaben ausführt oder Daten kontinuierlich verarbeitet.
Wann einen Worker wählen
- Eine Warteschlange konsumieren (BullMQ, RabbitMQ, oder eine einfache Redis-Liste).
- Wiederkehrende Aufgaben (E-Mail-Versand, Synchronisation, Bereinigung).
- Lange Verarbeitung, die Ihre Web-Anwendung nicht blockieren darf (PDF-Erstellung, Importe).
Einen Worker erstellen
- + Neuer Dienst → Typ Worker.
- Verbinden Sie das Repository (oder das Docker-Image) mit dem Code.
- Definieren Sie bei Bedarf einen dedizierten Startbefehl. Das ist praktisch, wenn der Worker im selben Repository wie die Web-Anwendung lebt:
node dist/worker.js
Beispiel: eine Redis-Warteschlange konsumieren
import Redis from "ioredis";
const redis = new Redis(process.env.REDIS_URL!);
while (true) {
// BRPOP blockiert, bis ein Job ankommt
const [, payload] = await redis.brpop("jobs:emails", 0);
await sendEmail(JSON.parse(payload));
}
Der Web-Dienst schiebt die Jobs (LPUSH jobs:emails …), der Worker entnimmt sie: beide Dienste teilen sich dieselbe Redis-Instanz des Projekts, verbunden über ihre Umgebungsvariablen.
Bewährte Praktiken
- Ein Worker = eine Verantwortung. Zwei sehr unterschiedliche Warteschlangen verdienen zwei Worker: jeder skaliert und startet unabhängig neu.
- Beenden Sie den Prozess sauber. Beim Empfang von
SIGTERMbeenden Sie den laufenden Job, bevor Sie stoppen. Redeployments ersetzen den Prozess. - Idempotenz: ein Job kann nach einem Neustart erneut verarbeitet werden. Stellen Sie sicher, dass eine doppelte Verarbeitung wirkungslos ist.
Die Logs und Metriken (CPU/Speicher) des Workers sind wie bei jedem anderen Dienst in den Tabs Logs und Observability verfügbar.