Email senden, Bilder verarbeiten, Reports generieren, das gehoert nicht in deinen API-Response. Job Queues verarbeiten solche Aufgaben im Hintergrund damit deine App schnell bleibt.
Pro-Tip — Der schnelle Weg
Setze immer ein Timeout und maximale Retry-Versuche. Ein Job der ewig haengt blockiert die gesamte Queue. 3 Retries mit exponentiellem Backoff ist ein guter Standard.
Seite 1
1
BullMQ installieren
BullMQ ist die Standard-Queue-Library fuer Node.js. Sie braucht Redis als Backend, Upstash Redis funktioniert auch.
npm install bullmq ioredis
2
Queue definieren
Erstelle eine Queue mit einem Namen und Redis-Verbindung. Jede Queue verarbeitet einen bestimmten Typ von Jobs.
// lib/queue.ts import { Queue } from 'bullmq'; import IORedis from 'ioredis';
const connection = new IORedis(process.env.REDIS_URL!, { maxRetriesPerRequest: null });
export const emailQueue = new Queue('emails', { connection }); export const imageQueue = new Queue('images', { connection });
3
Jobs hinzufuegen
Fuege Jobs zur Queue hinzu von ueberall in deiner App. Der Job wird asynchron verarbeitet, dein API-Response wartet nicht darauf.
// In deinem Route Handler import { emailQueue } from '@/lib/queue';
export async function POST(request: Request) { const { userId, plan } = await request.json(); await db.subscription.create({ data: { userId, plan } });
// Email wird im Hintergrund gesendet await emailQueue.add('welcome-email', { to: user.email, template: 'welcome', data: { name: user.name, plan }, }, { attempts: 3, backoff: { type: 'exponential', delay: 5000 } });
API-Responses bleiben schnell weil schwere Arbeit im Hintergrund passiert
Automatische Retries bei Fehlern ohne dass der User nochmal klicken muss
Concurrency-Control verhindert Ueberlastung bei vielen gleichzeitigen Jobs
Redis als Backend ist blitzschnell und bewaehrt fuer Millionen von Jobs
Tipps
Nutze separate Queues fuer verschiedene Job-Typen mit unterschiedlichen Prioritaeten
BullMQ Dashboard 'bull-board' gibt dir eine Web-UI zur Job-Ueberwachung
Fuer Serverless ohne Redis nutze Inngest oder Trigger.dev als Alternative
Teste Worker lokal mit einem Redis Docker Container: docker run -p 6379:6379 redis
Seite 3
Bereit für den nächsten Schritt?
KIWorld VibeCoding Masterclass
Du willst nicht nur einzelne Tools einrichten, sondern wirklich lernen wie du mit KI komplette Apps, Websites und SaaS-Produkte baust? Über 700 Videos — von Anfänger bis Fortgeschritten — in jedem Bereich. Von der Idee bis zum fertigen Produkt, ohne eine Zeile Code selbst zu schreiben.