Colas y procesamiento asíncrono
Síncrono frente a asíncrono
La llamada síncrona espera respuesta y ata la disponibilidad de ambos. El patrón asíncrono deja un mensaje y sigue: quien lo procesa lo toma cuando puede, tolerando que el otro esté lento o caído.
Broker y colas
- Un broker recibe, guarda y entrega mensajes entre productores y consumidores.
- Una cola ordena mensajes para un grupo que los consume.
- Un tema los reparte entre varios consumidores independientes.
Desacoplamiento
Productor y consumidor dejan de conocerse ni coincidir en el tiempo. Puedes añadir consumidores sin tocar el emisor, y un consumidor nuevo no rompe al resto: el contrato es el formato del mensaje.
Absorber picos
Cuando la demanda se dispara, la cola acumula trabajo y los consumidores lo digieren a su ritmo. La cola actúa como volante: la punta entra irregular y sale suave y procesable.
Entrega y duplicación
Los brokers ofrecen al menos una vez y a veces exactamente una vez. Como reintentar puede duplicar, el consumidor debe ser idempotente: procesar dos veces el mismo mensaje no debe dañar.
Orden y paralelismo
Preservar el orden estricto limita el paralelismo; para acelerar se particiona por clave, garantizando orden dentro de cada partición pero no global. Orden total y alto rendimiento tironean.
Colas muertas
Un mensaje que falla repetidamente se aísla en una cola de fallos para inspeccionarlo sin bloquear el flujo. Es la válvula que evita que un mensaje tóxico atascara a todos los consumidores.

Errores frecuentes
- Esperar la respuesta dentro de la transacción y atar la suerte de dos servicios.
- Consumidores que no son idempotentes y cobran dos veces al reintregar el mensaje.
- Exigir orden global y renunciar al paralelismo que la cola ofrecía.
Ejemplo resuelto: cobros que sobreviven al proveedor caído
Un servicio de pagos falla a veces justo al llamar al cobrador. El rediseño:
- Publicar la orden de cobro en una cola duradera en vez de llamar en línea.
- Responder al usuario con el encargo aceptado, sin esperar el cobro completo.
- Consumir a ritmo sostenido, añadiendo consumidores cuando la cola crece.
- Reintentar con espera creciente y, si se agota, mover el mensaje a la cola muerta.
- Garantizar idempotencia por identificador de cobro para no duplicar cargos.
¿Para qué sirve en la realidad?
Casi toda integración entre servicios, del email a la liquidación, usa colas para no caerse junta. El desacople convierte una dependencia de disponibilidad en un contrato sobre el formato del mensaje.
Un servicio de pagos falla a veces bajo su operación de cobro. Procesar los cobros vía una cola duradera en vez de una llamada directa aporta sobre todo:
Fiarse de una cola hace innecesario que el consumidor sea idempotente.
Colas
Ordena el recorrido de un mensaje asíncrono con reintentos:
Publicar
Acumular
Consumir
Muerta
Cola de mensajes
Funcionamiento de las colas y su papel en el desacoplamiento de sistemas.
Une cada pieza de la mensajería con su función.
Desacoplar en tiempo y en fallo
# Colas y asincronía ## Desacople ### ni se conocen ### ni coinciden en el tiempo ## Picos ### el buffer amortigua ### consumo a ritmo ## Entrega ### al menos una vez ### idempotencia obligada ## Orden ### por clave en particiones ### global si se paga en paralelo
Tutoriales oficiales de RabbitMQ
Guías paso a paso de colas, intercambios y consumidores.
Tu servicio de correos envía facturas y a veces el proveedor de email está caído. ¿Cómo convertir eso en flujo con cola, y qué debes garantizar en el consumidor por los reintentos?