Skip to content

implement-queue

Set up queue processing with Cloudflare Queues for asynchronous task handling.

Overview

The implement-queue command creates a complete queue processing system using Cloudflare Queues, enabling reliable asynchronous task processing with automatic retries and dead letter queues.

Usage

bash
/template implement-queue <queue-name> [options]

Parameters

  • <queue-name> - Name of the queue to implement (e.g., email-queue, image-processing)

Options

  • --max-retries - Maximum retry attempts (default: 3)
  • --batch-size - Number of messages to process in batch (default: 10)
  • --visibility-timeout - Message visibility timeout in seconds (default: 30)

Examples

Basic Queue

bash
/template implement-queue notification-queue

Image Processing Queue

bash
/template implement-queue image-processing --batch-size 5 --visibility-timeout 300

Email Queue with High Retries

bash
/template implement-queue email-queue --max-retries 5

What It Creates

Queue Configuration

  • wrangler.toml queue binding
  • Queue consumer worker
  • Message producer utilities
  • Dead letter queue setup

Generated Structure

src/
├── queues/
│   ├── [queue-name]/
│   │   ├── consumer.ts    # Queue consumer logic
│   │   ├── producer.ts    # Message producer utility
│   │   ├── types.ts       # Queue message types
│   │   └── handler.ts     # Message processing logic
│   └── index.ts           # Queue exports

Example Consumer

typescript
// src/queues/email-queue/consumer.ts
export async function handleEmailQueue(batch: MessageBatch<EmailMessage>) {
  for (const message of batch.messages) {
    try {
      await processEmail(message.body);
      message.ack();
    } catch (error) {
      message.retry();
    }
  }
}

Example Producer

typescript
// src/queues/email-queue/producer.ts
export async function sendToEmailQueue(env: Env, email: EmailMessage) {
  await env.EMAIL_QUEUE.send(email);
}

Best Practices

  1. Idempotent Processing: Ensure messages can be processed multiple times safely
  2. Error Handling: Implement proper retry logic
  3. Monitoring: Add logging and metrics
  4. Batch Processing: Use batching for efficiency
  5. Timeouts: Set appropriate visibility timeouts

Common Patterns

With R2 Storage

bash
/template add-r2-storage uploads
/template implement-queue file-processing

With Scheduled Jobs

bash
/template implement-queue cleanup-queue
/template add-worker-cron cleanup-trigger "0 * * * *"

Multi-Stage Processing

bash
/template implement-queue upload-queue
/template implement-queue processing-queue
/template implement-queue notification-queue

Integration Points

  • Workers KV: For job status tracking
  • R2: For file processing queues
  • D1: For queue metadata
  • Analytics: For queue metrics

Error Handling

The command includes:

  • Automatic retries with exponential backoff
  • Dead letter queue for failed messages
  • Error logging and alerting
  • Message deduplication

Performance Considerations

  • Batch processing for efficiency
  • Concurrent message handling
  • Memory-efficient processing
  • Optimized for edge runtime

Built with ❤️ for the AI Coding community, by Praney Behl