Translate

sábado, 6 de septiembre de 2025

Patrones de Diseño Comunes en el Uso de Colas



En sistemas distribuidos y arquitecturas modernas, el uso de colas de mensajes (Message Queues) se ha vuelto fundamental. Una cola permite que distintos procesos o servicios se comuniquen de forma asíncrona, desacoplada y tolerante a fallos.

Pero más allá de la idea básica, a lo largo del tiempo han surgido patrones de diseño comunes que nos ayudan a organizar y resolver problemas típicos en el uso de colas.


Productor – Consumidor

Es el patrón más simple:

  • Un productor envía mensajes a la cola.
  • Un consumidor los procesa en orden.

Ventajas: desacopla quién genera la tarea de quién la resuelve.

Ejemplo: un servicio de e-commerce que recibe pedidos (productor) y un servicio de facturación que los procesa (consumidor).


Work Queue (Cola de trabajo)

Extiende el patrón anterior:

  • Varios consumidores leen de la misma cola.
  • Los mensajes se reparten entre ellos.

Ventajas: balanceo de carga automático.

Ejemplo: procesamiento de imágenes en paralelo por múltiples workers.


Publish – Subscribe (Pub/Sub)

Un mensaje publicado puede llegar a muchos consumidores al mismo tiempo.

Cada suscriptor recibe su propia copia.

Ventajas: facilita arquitecturas basadas en eventos.

Ejemplo: al registrarse un nuevo usuario, se notifican:

  • el servicio de email de bienvenida,
  • el sistema de analíticas,
  • y el motor de recomendaciones.


Routing (Enrutamiento de mensajes)

Los mensajes llevan una clave de enrutamiento, y solo ciertos consumidores los reciben.

Ventajas: flexibilidad en la distribución de tareas.

Ejemplo:

Clave email → va al microservicio de correo.

Clave sms → va al microservicio de mensajería.


Priority Queue (Cola con prioridad)

Los mensajes tienen prioridad, y los más urgentes se procesan primero.

Ventajas: asegura la atención de los eventos críticos.

Ejemplo: en un sistema de soporte, los tickets urgentes se atienden antes que los normales.


Dead Letter Queue (Cola de mensajes fallidos)

Cuando un mensaje no puede ser procesado correctamente después de varios intentos, se envía a una cola especial de errores.

Ventajas: no se pierden mensajes y se pueden auditar.

Ejemplo: una orden de compra inválida que requiere revisión manual.


Delayed Queue (Cola con retardo)

Los mensajes no se procesan inmediatamente, sino que quedan en espera hasta que pasa cierto tiempo.

Ventajas: permite programar tareas futuras.

Ejemplo: enviar un recordatorio de pago 24 horas antes del vencimiento.


Las colas no son solo un mecanismo para mover datos entre procesos:

  • Implementan patrones que ayudan a construir sistemas robustos, escalables y fáciles de mantener.
  • Elegir el patrón correcto (Productor-Consumidor, Work Queue, Pub/Sub, Routing, etc.) puede simplificar la arquitectura y mejorar el rendimiento.


En el mundo de los microservicios y las arquitecturas event-driven, los patrones de diseño con colas son una pieza clave del rompecabezas.