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
# 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
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
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 Case | Producer | Consumer | Retry Policy |
|---|---|---|---|
| Email sending | Webhook handler | Email service | 3 retries, 60s delay |
| Image processing | Upload handler | Image optimizer | 5 retries, 30s delay |
| Data sync | Webhook receiver | External API sync | 10 retries, exponential |
| Report generation | Cron trigger | PDF generator | 2 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.