Overview
Broccoli supports scheduling messages for delayed delivery. You can either delay a message by a duration or schedule it for a specific time.Enabling scheduling
Enable scheduling when building your queue:Delayed delivery
Delay a message by a specific duration:Scheduled delivery
Schedule a message for a specific time:Batch scheduling
Schedule multiple messages:PublishOptions
ThePublishOptions struct supports several scheduling-related options:
Builder pattern
Use cases
Scheduled reports
Retry with backoff
Rate limiting
How scheduling works
Broker-specific behavior
| Feature | Redis | RabbitMQ | SurrealDB |
|---|---|---|---|
delay | ✅ | ✅ (requires plugin) | ✅ |
scheduled_at | ✅ | ✅ (requires plugin) | ✅ |
| Precision | ~1 second | ~1 second | ~1 second |
Best practices
Use delay for short intervals
Use delay for short intervals
For delays under a few hours, use
delay:Use scheduled_at for specific times
Use scheduled_at for specific times
For calendar-based scheduling, use
scheduled_at:Consider time zones
Consider time zones
scheduled_at uses OffsetDateTime. Be explicit about time zones:Monitor scheduled queue size
Monitor scheduled queue size
With Redis, check the scheduled queue: