Backpressure is often first observed as a symptom: latency grows, queues fill, or a consumer appears to fall behind. The symptom is real, but it does not identify the boundary that is saturated. A producer burst, a slow downstream stage, an overloaded validation step, and an observation gap can look similar from the outside.

Instrument each stage

The first useful step is to add per-stage timestamps and counters. Record when an event was created, accepted, queued, started, completed, rejected, or discarded. Queue depth, service time, delivery freshness, and rejection reasons turn an intuition about congestion into a traceable hypothesis.

Separate capacity from visibility

A downstream stage can be saturated even when its queue is not visibly growing, especially if upstream admission is already shedding work. Conversely, a queue can grow because a consumer is slow even though the source is behaving normally. Replay and cross-stage identifiers help distinguish these cases.

Do not hide the boundary

Increasing queue sizes can be valid, but it is not a diagnosis. A larger buffer may trade visible drops for hidden latency and a harder recovery path. The durable lesson is to make freshness and backpressure first-class evidence before changing capacity.