Arquitectura y Patrones de Diseño en Middleware de Mensajería (MOM)

Middleware de Mensajería (MOM)

Definición

El Message Oriented Middleware (MOM) es uno de los sistemas más utilizados en la integración de aplicaciones.

  • Provee un mecanismo de comunicación asíncrona basado en el encolamiento de mensajes (Message Queuing).
  • Administra el envío y entrega de mensajes. Su tarea principal es asegurar que este proceso sea realizado de una manera confiable.

Características

El objetivo principal de un middleware de mensajería es transmitir mensajes desde un computador a otro.

  • Cuando una aplicación envía un mensaje, la aplicación receptora no necesariamente debe estar disponible.
  • Aun cuando ambas aplicaciones se encuentren disponibles, pueden existir problemas de red que impidan la transmisión de un mensaje.
  • Un sistema de mensajería debe superar estas limitaciones intentando reenviar el mensaje hasta que sea logrado.

Transmisión de Mensajes

En esencia, un mensaje es enviado en cinco pasos:

  1. Creación: El emisor crea el mensaje adjuntando datos.
  2. Envío: El emisor coloca el mensaje en una cola.
  3. Entrega: El sistema de mensajería mueve el mensaje desde el computador del emisor al computador del receptor, dejándolo disponible para su recepción.
  4. Recepción: El receptor lee el mensaje desde una cola.
  5. Procesamiento: El receptor procesa la data del mensaje.

Conceptos Básicos del MOM

Colas

Una vez que un sistema de mensajería está disponible, se requiere un medio físico para la transmisión de mensajes entre dos aplicaciones.

  • Para que dos aplicaciones se puedan comunicar, ambas deben utilizar la misma cola.
  • La aplicación emisora no sabe necesariamente cuál es la aplicación receptora. Lo mismo aplica en sentido inverso.

Mensaje

Las aplicaciones empaquetan información dentro de un mensaje, que corresponde a datos que un sistema de mensajería puede transmitir desde un emisor a un receptor a través de un canal.

Un mensaje consiste de dos partes:

  • Header: Información usada por el sistema de mensajería que describe la data transmitida, su origen, destinos, etc.
  • Body: Contiene la data a ser transmitida entre dos aplicaciones. El sistema de mensajería conserva su integridad y formato durante la transmisión.

Filtro

Los filtros son utilizados para dividir el procesamiento de un mensaje en tareas más pequeñas, independientes, que son conectadas a través de una cola.

  • Un filtro recibe un mensaje desde una cola, procesa el mensaje y lo coloca en una cola de entrada a otro filtro.

Enrutadores (Routers)

Un enrutador (Router) es un filtro especial, el cual consume un mensaje desde una cola y lo republica en otra, dependiendo de ciertas reglas.

  • Se diferencia de un Filtro dado que conecta múltiples colas de salida.
  • El beneficio principal de usar un enrutador es que las reglas para decidir el destino de un mensaje residen en un solo lugar.

Transformador

Un transformador es un filtro especial que traduce un tipo de formato en otro.

  • Permite que aplicaciones con modelos de datos diferentes puedan ser integradas.
  • Permite que aplicaciones con interfaces propietarias puedan ser accedidas por otras aplicaciones.

Niveles de Transformación

Estructuras de datos

  • Entidades, relaciones, cardinalidad.

Tipos de datos

  • Nombres, tipos y dominios de datos, códigos.

Representación de datos

  • XML, largo posición, uso de separadores, propietario.

Transporte

  • Protocolos de comunicación: TCP/IP, HTTP, SOAP.

Endpoints

Los Endpoints permiten a las aplicaciones conectarse a un sistema de mensajería para enviar o recibir mensajes.

  • Una aplicación no necesita conocer el formato, la cola utilizada, ni otros detalles de comunicación con otras aplicaciones a través del sistema de mensajería.
  • Un endpoint utiliza la API del sistema de mensajería. Si el sistema de mensajería cambia, solo es necesario modificar el endpoint, no las aplicaciones.

Un endpoint puede servir para enviar o recibir mensajes, o ambas tareas.

Patrones de Diseño de Mensajería

Los patrones describen un problema y qué hacer para solucionarlo.

  • Los patrones permiten tomar decisiones que conduzcan a una buena solución, sin necesidad de tener un conocimiento o experiencia para desarrollar una solución particular.

Point to Point (Punto a Punto)

Este tipo de colas permite asegurar que solamente un receptor recibirá un mensaje particular.

  • Si más de un receptor intenta obtener un mensaje (Competing Consumers), el sistema de mensajería asegura que solo uno podrá obtener un mensaje a la vez.

Publish Subscribe (Publicar/Suscribir)

Una aplicación se suscribe para recibir solo mensajes que cumplan ciertas condiciones.

  • Cuando una aplicación publica un mensaje, una copia de este es entregada a todas las aplicaciones suscritas.

Request Reply (Solicitud/Respuesta)

Permite que una aplicación pueda enviar un mensaje y esperar la respuesta desde el receptor.

  • Puede ser implementado tanto en modalidad síncrona como asíncrona.
  • Utiliza una cola para el requerimiento (request) y otra para la respuesta (reply).

Reply to Q (Cola de Respuesta)

Para evitar tener fija (hardcodeada) la cola de respuesta, el mensaje de requerimiento debe indicar cuál es la cola donde desea la respuesta.

  • Implementa el mismo concepto del campo Reply-To de un mensaje de correo electrónico.

Correlation ID (ID de Correlación)

Cuando llega una respuesta, ¿cómo sabe el emisor que esa respuesta corresponde al requerimiento previamente enviado?

  • Para solucionarlo, cada mensaje debe contener un correlativo único (correlation id). El receptor debe replicar el identificador en el mensaje de respuesta.

Manejo de Errores y Mensajes Especiales

Mensajes Inválidos

En teoría, una aplicación espera cierto tipo de datos con un formato dado.

  • Si la aplicación receptora no puede procesar el mensaje debido a que la data asociada no es válida, se envía ese mensaje a una cola especial.
  • Esta cola actúa como log, permitiendo identificar situaciones anómalas.

Dead Letter (Mensaje No Entregable)

Si una aplicación no puede procesar un mensaje, este se deja en una cola de mensajes inválidos.

  • Sin embargo, puede ocurrir que este mensaje no pueda ser entregado. En tal caso, este mensaje es derivado a una cola especial llamada Dead Letter.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.