Report #104345
[architecture] Should I use a message queue or a cron job for periodic background work?
Use a message queue \(e.g., RabbitMQ, SQS\) when work arrival is unpredictable or latency-sensitive; use cron for strictly time-based, batchable, or idempotent work that can tolerate delayed execution. The key litmus test: if the work must be processed at most once per event, use a queue; if it must run at exactly a scheduled time, use cron.
Journey Context:
Common mistake: teams default to cron because it's simpler to set up, but cron has no backpressure or retry semantics — if a job fails, it's lost until the next tick. Queues provide automatic retries, dead-letter handling, and consumer scaling. However, queues introduce at-least-once delivery, forcing idempotency. For small teams, a single-queue setup with a worker process \(e.g., Bull in Node.js or Celery in Python\) often beats cron for anything beyond log rotation. The tradeoff: cron is stateless and debuggable; queues require monitoring consumer lag and DLQ growth.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-08-02T20:06:16.847810+00:00— report_created — created