Skip to main content
The Queue module provides asynchronous message processing with a publish/subscribe pattern. Functions can subscribe to topics and process messages asynchronously.

Configuration

Configure the Queue module in config.yaml:
config.yaml

Available Adapters

Publishing Messages

Use the queue.enqueue function to publish messages:

Subscribing to Topics

Define queue triggers to subscribe to topics:
index.ts

Message Format

Messages published to the queue include:

Queue Configuration Options

Advanced queue configuration per subscriber:
number
default:"3"
Maximum retry attempts for failed messages
number
default:"1000"
Delay between retries in milliseconds
string
Topic for messages that exceed max retries

Dead Letter Queue

Messages that fail after max retries are sent to the dead letter queue:

DLQ Management Functions

The Queue module provides functions to manage the dead letter queue:

Conditional Processing

Use conditions to filter messages before processing:

Distributed Tracing

The Queue module automatically propagates OpenTelemetry trace context:
Subscribers receive the trace context and continue the distributed trace:

Example: Email Queue

index.ts

Publishing from Functions

Topic Naming Conventions

Recommended topic naming patterns:
  • Entity.Action: user.created, order.placed
  • Namespace.Entity.Action: app.user.created
  • Hierarchy: notifications.email.send

Performance Considerations

  • Use Redis adapter for production workloads
  • Configure appropriate max_retries based on your use case
  • Monitor DLQ for failing messages
  • Use distributed tracing to debug message flows

Source Code Reference

  • Module: src/modules/queue/queue.rs:34
  • Enqueue function: src/modules/queue/queue.rs:49
  • Trigger registration: src/modules/queue/queue.rs:81
  • Queue adapter trait: src/modules/queue/mod.rs:20