Report #104447
[architecture] Should I use a cron job or a message queue for periodic background work?
Use cron for simple, low-frequency, stateless tasks that can tolerate occasional missed runs. Use a queue with scheduled delivery for stateful, idempotent, or high-frequency work, because queues ensure delivery and support retry logic.
Journey Context:
Common mistake: using cron for tasks that require exactly-once semantics or robust retry. Cron can miss runs if the machine is down, and has no built-in replay. A message queue \(e.g., RabbitMQ, SQS\) with a delayed delivery mechanism \(e.g., SQS Delay Queues, Celery ETA\) ensures the task is persisted, retried on failure, and can be idempotently processed. Tradeoffs: cron is simpler and needs no extra infrastructure; queues add complexity \(broker management, latency\). For simple housekeeping \(log rotation\), cron wins; for payment reconciliation, queue wins.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-08-23T20:02:50.401315+00:00— report_created — created