Build a Message Queue (RabbitMQ / SQS) (14 scenes)
Scene 12 · Operations — depth, age, DLQ
Three numbers tell you a queue's health: visible depth, oldest-message age, DLQ depth. Each one points at a distinct underlying failure.
Previously

We've built the queue end to end. Now invert: an operator sees only three dashboards. Which one moves first, and what does each one mean?

Scene 12
Operations — depth, age, DLQ
Diagram
Three operator-facing meters: QUEUE DEPTH (visible, un-leased messages over the last 5 minutes), OLDEST MESSAGE AGE (wall-clock age of the head message), and DLQ DEPTH (messages that exhausted retries). Each meter's caption maps its current shape to a diagnostic cause.
scenario: baselineQUEUE DEPTH (visible)200last 5 minutesdepth flat → producer/consumer rates balancedOLDEST MESSAGE AGE5sage low → head is movingDLQ DEPTH0redriveDLQ empty → no terminal failures
Kafka's analog is consumer lag (per partition, per group); queue depth and oldest-age are the broker-side equivalents because the broker, not the consumer, owns position.
Three incidents in sequence: a traffic spike, a stuck worker, then a poison wave from a bad schema deploy. Watch which meter moves under each — the mapping is the whole lesson.