Cloudflare WorkersQueuesAsyncMessage Queue

Cloudflare Workers: Queues for Async Processing

Build reliable async processing pipelines with Cloudflare Workers Queues, covering producer-consumer patterns, batch processing, and error handling.

Alex Chen
Alex Chen
June 11, 202611 min read

TL;DR: Cloudflare Queues is a global message queue service for Workers that handles async processing, load leveling, and retry logic. This guide covers queue configuration, producer/consumer patterns, batch processing, and dead letter queues.

Introduction

Async processing decouples request handling from expensive operations. Instead of processing an email send during an HTTP request, you queue the job and handle it separately. For more on async patterns with Durable Objects for real-time coordination, see our Cloudflare Workers Durable Objects guide. Queues provide at-least-once delivery, automatic retries, and configurable concurrency.

Queue Configuration

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 Pattern

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 })
      }
    }
  },
}

Queue Use Cases

Use CaseProducerConsumerRetry Policy
Email sendingWebhook handlerEmail service3 retries, 60s delay
Image processingUpload handlerImage optimizer5 retries, 30s delay
Data syncWebhook receiverExternal API sync10 retries, exponential
Report generationCron triggerPDF generator2 retries, 5min delay

Conclusion

Queues provide reliable async processing for Workers applications. Use them for any operation that doesn't need to complete during the HTTP request — email sending, image processing, data synchronization, and report generation. For scheduling regular queue-producing tasks, combine Queues with Cloudflare Workers Cron Triggers. And to track queue performance, leverage the Cloudflare Workers Analytics Engine for monitoring throughput and error rates.