Saltar a contenido

Capítulo 7: Endpoints de Mensajería

Introducción

Los capítulos anteriores han cubierto canales, mensajes, routing y transformación — los componentes internos del sistema de mensajería. Pero queda una pregunta fundamental: ¿cómo se conecta una aplicación de negocio al sistema de mensajería?

Las aplicaciones no nacen con conocimiento nativo de cómo producir y consumir mensajes. Necesitan un componente que haga de puente entre la lógica de aplicación y la infraestructura de mensajería. Ese componente es el Message Endpoint: la interfaz entre el mundo de la aplicación y el mundo del messaging.

Los patrones de este capítulo cubren todos los aspectos de esa interfaz:

  • Cómo abstraer la complejidad del messaging de la lógica de aplicación (Gateway, Mapper)
  • Cómo gestionar transacciones entre la aplicación y el broker (Transactional Client)
  • Cómo recibir mensajes: por polling o por eventos (Polling Consumer, Event-Driven Consumer)
  • Cómo escalar el consumo con múltiples instancias (Competing Consumers)
  • Cómo distribuir mensajes a handlers específicos (Message Dispatcher)
  • Cómo filtrar mensajes en el endpoint (Selective Consumer)
  • Cómo sobrevivir a reinicios sin perder mensajes (Durable Subscriber)
  • Cómo manejar duplicados de forma segura (Idempotent Receiver)
  • Cómo activar lógica de negocio al recibir un mensaje (Service Activator)

Los Once Patrones de Endpoints

Patrón Pregunta que responde Área
Messaging Gateway ¿Cómo se oculta la complejidad del messaging a la aplicación? Abstracción
Messaging Mapper ¿Cómo se convierte entre objetos de dominio y mensajes? Mapeo
Transactional Client ¿Cómo se coordina messaging con transacciones de la aplicación? Transaccionalidad
Polling Consumer ¿Cómo se consume a demanda, cuando la aplicación está lista? Consumo pull
Event-Driven Consumer ¿Cómo se consume automáticamente cuando llega un mensaje? Consumo push
Competing Consumers ¿Cómo se escala el procesamiento con múltiples instancias? Escalabilidad
Message Dispatcher ¿Cómo se distribuye a handlers especializados en un solo proceso? Distribución interna
Selective Consumer ¿Cómo se consume solo mensajes que cumplen ciertos criterios? Filtrado
Durable Subscriber ¿Cómo se evita perder mensajes durante downtime? Durabilidad
Idempotent Receiver ¿Cómo se manejan mensajes duplicados de forma segura? Idempotencia
Service Activator ¿Cómo se invoca lógica de negocio al recibir un mensaje? Activación

Mapa del Capítulo

Patrón Función Vigencia
Messaging Gateway Abstracción de messaging Alta
Messaging Mapper Conversión dominio ↔ mensaje Alta
Transactional Client Transaccionalidad messaging + app Alta
Polling Consumer Consumo pull-based Alta
Event-Driven Consumer Consumo push-based Alta
Competing Consumers Escalabilidad horizontal de consumo Alta
Message Dispatcher Distribución interna a handlers Media
Selective Consumer Filtrado en el endpoint Media
Durable Subscriber Consumo resiliente a downtime Alta
Idempotent Receiver Manejo seguro de duplicados Alta
Service Activator Activación de lógica de negocio Alta

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