Skip to main content

Overview

The queue operation enables ensembles to send messages to and consume messages from Cloudflare Queues. Use queues for:
  • Asynchronous processing - Decouple producers and consumers
  • Batch operations - Process multiple messages efficiently
  • Reliable delivery - Automatic retries and dead letter queues
  • Load leveling - Handle traffic spikes gracefully

Queue Modes

The queue operation supports three modes:
  1. send - Send a single message
  2. send-batch - Send multiple messages at once
  3. consume - Process messages (used with queue triggers)

Sending Messages

Single Message

Batch Send

Send multiple messages in a single operation:

Dynamic Batch from Input

Invoke with:

Consuming Messages

Queue Trigger Consumer

Configure ensemble to process queue messages:

Message Options

Content Type

Specify message format:

Delivery Delay

Delay message delivery:

Message Deduplication

Prevent duplicate messages:

Retry Logic

Automatic Retries

Failed messages are automatically retried:
Retry backoff:
  • Attempt 1: Immediate
  • Attempt 2: 1 second delay
  • Attempt 3: 5 seconds delay
  • Attempt 4: 30 seconds delay

Retry in Consumer

Handle retries explicitly:

Process DLQ Messages

Create separate ensemble for DLQ:

Complete Examples

Image Processing Pipeline

Performance Tips

Batch Size

  • Small batches (1-5): Low latency, real-time processing
  • Medium batches (10-20): Balanced throughput
  • Large batches (50-100): Maximum throughput, higher latency

Max Wait Time

Control batch fill time:

Parallel Processing

Process messages concurrently within a batch:

Message Size

Keep messages small for best performance:
  • Recommended: < 128 KB per message
  • Maximum: 256 KB per message
For large data, store in R2/KV and pass reference:

Error Handling

Handle Individual Failures

Process messages individually to isolate failures:

Circuit Breaker

Stop processing if too many failures:

Monitoring

Queue Metrics

Track queue performance:

Alerting

Alert on queue issues:

Best Practices

  1. Idempotency - Design consumers to handle duplicate messages
  2. Small batches for latency - Large batches for throughput
  3. Retry with backoff - Use exponential backoff for retries
  4. Monitor DLQ - Set up alerts for DLQ growth
  5. Message references - Store large data externally, queue references
  6. Graceful degradation - Handle individual message failures
  7. Circuit breakers - Stop processing during systemic failures

Next Steps

Triggers

Configure queue triggers

Event-Driven

Event-driven patterns

Storage

Store queue processing results

Webhooks

Combine webhooks with queues