Cloudflare Workers Queues: Asynchrone Verarbeitung

Erstellen Sie zuverlässige asynchrone Verarbeitungspipelines mit Cloudflare Workers Queues, inklusive Producer-Consumer-Mustern und Stapelverarbeitung.

Alex Chen
Alex Chen
1. Juni 202611 min read
Auch verfügbar auf:English · 中文

TL;DR: Cloudflare Queues ist ein globaler Message Queue-Dienst für Workers, der asynchrone Verarbeitung, Lastausgleich (Load Leveling) und Wiederholungslogik steuert. Dieser Leitfaden behandelt die Warteschlangenkonfiguration, Producer-Consumer-Muster, Stapelverarbeitung und unzustellbare Nachrichten (Dead Letter Queues).

Einführung

Asynchrone Verarbeitung entkoppelt die Anfragenbearbeitung von rechenintensiven Operationen. Anstatt den E-Mail-Versand während einer HTTP-Anfrage abzufertigen, fügen Sie den Job in die Warteschlange ein und verarbeiten ihn separat. Weitere Informationen zu asynchronen Mustern mit Durable Objects für die Echtzeit-Koordination finden Sie in unserem Cloudflare Workers Durable Objects Leitfaden. Queues bieten eine „At-least-once“-Zustellung (mindestens einmal), automatische Wiederholungsversuche und konfigurierbare Concurrency (Nebenläufigkeit).

Warteschlangenkonfiguration

toml
# wrangler.jsonc
{
  "queues": {
    "producers": ["email-queue"],
    "consumers": {
      "email-queue": {
        "max_batch_size": 10,
        "max_batch_timeout": 5,
        "max_retries": 3,
        "dead_letter_queue": "email-queue-dlq"
      }
    }
  }
}

Producer-Muster

ts
export default {
  async fetch(request: Request, env: Env): Promise<Response> {
    const body = await request.json()
    await env.EMAIL_QUEUE.send({
      to: body.email,
      template: 'welcome',
      data: { name: body.name },
    })
    return new Response('Queued', { status: 202 })
  },
}

Consumer-Handler

ts
export default {
  async queue(batch: MessageBatch<EmailMessage>, env: Env): Promise<void> {
    for (const message of batch.messages) {
      try {
        await sendEmail(message.body)
        message.ack()
      } catch (error) {
        message.retry({ delaySeconds: 60 })
      }
    }
  },
}

Anwendungsfälle für Queues

AnwendungsfallProducerConsumerWiederholungsrichtlinie
E-Mail-VersandWebhook-HandlerE-Mail-Dienst3 Wiederholungen, 60s Verzögerung
BildverarbeitungUpload-HandlerBildoptimierer5 Wiederholungen, 30s Verzögerung
DatensynchronisationWebhook-EmpfängerExterner API-Sync10 Wiederholungen, exponentiell
BerichterstellungCron-TriggerPDF-Generator2 Wiederholungen, 5min Verzögerung

Fazit

Queues bieten zuverlässige asynchrone Verarbeitung für Workers-Anwendungen. Setzen Sie diese für jede Operation ein, die nicht zwingend während der HTTP-Anfrage abgeschlossen werden muss – wie E-Mail-Versand, Bildverarbeitung, Datensynchronisation und Berichterstellung. Um Aufgaben zu planen, die in Queues eingespeist werden, können Sie Queues mit Cloudflare Workers Cron Triggers kombinieren. Wenn Sie die Leistung Ihrer Queues überwachen möchten, nutzen Sie die Cloudflare Workers Analytics Engine zur Kontrolle von Durchsatz und Fehlerraten.