Cuando una API, un productor webhook o una interfaz genera trabajo más rápido de lo que un servicio puede terminarlo, una cola absorbe el pico pero no elimina la falta de capacidad. Sin una señal de retorno, el backlog crece hasta agotar latencia, memoria, almacenamiento o paciencia. Backpressure hace visible y acotado ese desequilibrio.
Publicado el 11 de octubre de 202613 min de lecturaProfundidad, rendimiento y sobrecarga
Lee la profundidad junto a llegadas y procesamiento
Comportamiento ilustrativo; importa la diferencia entre llegadas y finalizaciones
EstableLlegadas por debajo de la capacidad; la cola vuelve a su nivel normal.SaturadoLlegadas superiores al servicio; aumentan volumen y antigüedad.RecuperaciónMenos admisión y capacidad libre vacían el backlog.
La profundidad por sí sola es ambigua. Combínala con ritmos de entrada y finalización, antigüedad del mensaje más viejo, reintentos y saturación de consumidores. Una cola larga puede ser normal en lotes; un mensaje antiguo en una operación interactiva puede ser un incidente. Estima el tiempo de vaciado con capacidad sobrante y nuevas llegadas, no como si la cola estuviera detenida.
Acota cada buffer
Frontera
Mecanismo
Compensación
Entrada HTTP
Límite de tasa, concurrencia y 429/503 con indicación de reintento
Protege el servicio; exige reintentos responsables del cliente
Entrega del broker
Límite de prefetch/lote y acknowledgements explícitos
Acota mensajes en vuelo; muy bajo reduce rendimiento
Workers
Concurrencia y tamaño de cola limitados
Memoria predecible; el exceso espera o se rechaza
Base de datos
Pool de conexiones, bulkhead y control de admisión
Evita colapsos, pero puede aumentar latencia aguas arriba
Navegador
Debounce, cancelar solicitudes obsoletas y limitar paralelismo
Reduce demanda repetida; puede retrasar actualizaciones
Una cola ilimitada en memoria no es resiliencia: convierte la sobrecarga en consumo creciente y un fallo posterior. Define límites de cola y payload, expiración y qué hacer con el exceso: rechazar, combinar, persistir o descartar. Las sugerencias de escritura pueden eliminarse; una conciliación financiera, no.
Usa feedback, no solo más workers
Añadir consumidores ayuda si la dependencia también tiene capacidad. Si la base de datos o la API asociada ya está saturada, más workers aumentan la contención y los reintentos. Limita concurrencia en la frontera, utiliza backoff exponencial con jitter y respeta las indicaciones del proveedor. Un circuit breaker necesita una prueba de reapertura y una política segura para vaciar la cola.
En flujos ordenados, particiona por una clave estable para que un mensaje defectuoso no bloquee particiones ajenas. Con entrega al menos una vez, confirma después del éxito durable y haz idempotentes los efectos. Ajusta visibility timeout o acknowledgement al tiempo normal de proceso y prevé extensión controlada para trabajos largos.
Explica a los clientes qué puede aceptar el sistema
Backpressure forma parte del contrato de API. Devuelve un estado claro de sobrecarga, Retry-After cuando convenga e identificador de correlación. Para aceptación asíncrona, confirma solo después de guardar el trabajo de forma durable y ofrece consulta de estado o callback. No anuncies aceptación si la tarea solo existe en memoria volátil.
Señales operativas útiles
Representa a la vez entradas y finalizaciones, percentiles de antigüedad, mensajes en vuelo, reintentos, volumen DLQ, uso de consumidores y saturación de dependencias. Alerta por crecimiento sostenido y tiempo de vaciado, no por un umbral fijo desconectado del tráfico. Durante la recuperación, comunica si la cola está drenando y evita tormentas sincronizadas de reintentos.
Backpressure es una política de capacidad expresada con buffers acotados, concurrencia controlada y respuestas explícitas ante sobrecarga. Mide cuánto trabajo llega y termina, protege la dependencia más lenta y decide qué aplazar o rechazar antes de que lo decida el sistema.