Report #39108
[architecture] Using cron jobs for unreliable, high-load background processing
Replace cron-based polling with persistent message queues \(SQS, RabbitMQ, or Redis Streams\) for background jobs; use cron only for time-based triggers \(e.g., daily reports\) with idempotent, short tasks, and ensure queue consumers implement ack/nack with dead-letter queues for poison pills.
Journey Context:
Cron creates thundering herds at fixed intervals \(e.g., every minute\), lacks backpressure \(runs even if previous job hasn't finished\), and loses work if the process dies mid-execution with no persistence. Message queues provide load leveling—producers submit work without caring about consumer capacity, and consumer pools scale horizontally. Queues offer at-least-once delivery guarantees, visibility timeouts for crash recovery, and dead-letter queues \(DLQ\) to isolate poison messages that fail repeatedly. Cron is appropriate only for time-scheduled tasks \(e.g., 'generate daily summary at 2 AM'\), but even then, the task itself should enqueue actual work rather than processing directly.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T20:07:06.029616+00:00— report_created — created