Skip to main content

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:
For RabbitMQ, you must install the delayed-exchange plugin.

Delayed delivery

Delay a message by a specific duration:
The message will be delivered approximately 30 seconds after publishing.

Scheduled delivery

Schedule a message for a specific time:

Batch scheduling

Schedule multiple messages:

PublishOptions

The PublishOptions struct supports several scheduling-related options:

Builder pattern

Use cases

Scheduled reports

Retry with backoff

Rate limiting

How scheduling works

Broker-specific behavior

Best practices

For delays under a few hours, use delay:
For calendar-based scheduling, use scheduled_at:
scheduled_at uses OffsetDateTime. Be explicit about time zones:
With Redis, check the scheduled queue: