Report #102972
[architecture] Queue vs cron: when should background work be event-driven vs time-driven?
Use a queue when work is triggered by external events, bursts are unpredictable, or you need back-pressure and retry; use cron only for true time-bound housekeeping \(reports, cleanup, TTLs\) that must run whether or not there is work. Never use cron to drain a backlog of user-facing jobs.
Journey Context:
Cron is simple but assumes uniform load and a fixed schedule; under bursts it either falls behind or wastes cycles. Queues decouple producers from consumers, let you scale consumers, and preserve ordering/retry semantics. A common mistake is polling a table every minute with cron because 'we already have Postgres'—that creates lock contention, missed rows, and duplicates. If the work is user-triggered, put it on a queue; if the work is calendar-driven and stateless, cron is fine. A useful hybrid: cron can enqueue periodic summary jobs, but the actual execution should be queue-backed.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-10T04:47:49.199605+00:00— report_created — created