Saltar a contenido

Capítulo 5: Enrutamiento de Mensajes

Introducción

El enrutamiento de mensajes es la inteligencia del sistema de integración. Mientras que los canales proporcionan los conductos y los mensajes proporcionan la carga, los routers son los componentes que toman decisiones: ¿a dónde debe ir este mensaje? ¿Debe dividirse? ¿Debe combinarse con otros? ¿Debe seguir una ruta predefinida o una ruta dinámica? ¿Debe esperar a otros mensajes antes de continuar?

Este capítulo es el más extenso del libro porque el enrutamiento es donde reside la mayor complejidad y la mayor potencia de una arquitectura de integración. Los 12 patrones de routing cubren un espectro completo desde decisiones simples (enviar a canal A o B según un campo del mensaje) hasta orquestaciones complejas de procesos multi-paso con estado, compensación y timeout.

Los Doce Patrones de Routing

Patrón Pregunta que responde Complejidad
Content-Based Router ¿A dónde va este mensaje según su contenido? Baja
Message Filter ¿Este mensaje debe descartarse? Baja
Dynamic Router ¿Cómo se enruta cuando los destinos cambian en runtime? Media
Recipient List ¿A cuáles de múltiples destinos debe ir este mensaje? Media
Splitter ¿Cómo se procesa un mensaje compuesto por partes? Media
Aggregator ¿Cómo se combinan múltiples mensajes relacionados? Alta
Resequencer ¿Cómo se restaura el orden de mensajes desordenados? Alta
Composed Message Processor ¿Cómo se procesa un mensaje compuesto manteniendo integridad? Alta
Scatter-Gather ¿Cómo se consultan múltiples fuentes y se combinan resultados? Alta
Routing Slip ¿Cómo se define una ruta dinámica dentro del propio mensaje? Media
Process Manager ¿Cómo se orquesta un proceso multi-paso con estado? Muy Alta
Message Broker ¿Cómo se centraliza el routing sin acoplar productores y consumidores? Media

Taxonomía de Routing

Los patrones de routing se pueden clasificar en varias dimensiones:

Por Dirección del Flujo

  • Routing simple (1 entrada → 1 salida seleccionada): Content-Based Router, Dynamic Router, Message Filter
  • Distribución (1 entrada → N salidas): Recipient List, Splitter
  • Composición (N entradas → 1 salida): Aggregator, Resequencer
  • Composición compleja (N entradas ↔ M salidas): Scatter-Gather, Composed Message Processor

Por Estado

  • Stateless: Content-Based Router, Message Filter, Dynamic Router, Recipient List, Routing Slip, Message Broker
  • Stateful: Aggregator, Resequencer, Scatter-Gather, Process Manager

Los patrones stateful son significativamente más complejos de implementar, operar y escalar porque necesitan mantener estado entre mensajes.

Por Complejidad de Orquestación

  • Decisión puntual: Content-Based Router, Message Filter (decisión sobre un mensaje individual)
  • Composición: Splitter, Aggregator, Resequencer (operaciones sobre conjuntos de mensajes)
  • Orquestación: Process Manager, Scatter-Gather (coordinación de flujos multi-paso con estado y timeout)

Relevancia Moderna

El routing de mensajes es más relevante que nunca en las arquitecturas modernas:

  • Event-driven architectures: EventBridge rules, Kafka Streams branching, Azure Service Bus subscription filters son implementaciones directas de Content-Based Router y Recipient List.
  • Microservices orchestration: los saga orchestrators (Temporal, AWS Step Functions, Azure Durable Functions) son implementaciones directas de Process Manager.
  • Stream processing: las topologías de Kafka Streams, Flink y Beam implementan Splitter, Aggregator, Content-Based Router y Scatter-Gather como operadores nativos.
  • API Gateways: el routing de requests en Kong, Apigee o AWS API Gateway es una forma de Content-Based Router.

Mapa del Capítulo

Patrón Función Vigencia
Content-Based Router Routing por contenido del mensaje Alta
Message Filter Descarte de mensajes no deseados Alta
Dynamic Router Routing con destinos configurables en runtime Alta
Recipient List Distribución a destinos seleccionados Alta
Splitter División de mensajes compuestos Alta
Aggregator Combinación de mensajes relacionados Alta
Resequencer Restauración de orden Media
Composed Message Processor Procesamiento de mensajes compuestos con integridad Media
Scatter-Gather Consulta paralela y combinación de resultados Alta
Routing Slip Ruta dinámica embebida en el mensaje Media
Process Manager Orquestación de procesos multi-paso con estado Alta
Message Broker Hub centralizado de routing Media

A continuación, cada patrón de routing se analiza en profundidad.