jueves, 13 de febrero de 2014

Patrones de Mensajería


PATRÓN

Un patrón es una solución general para un problema que aparece con frecuencia en un dominio determinado.

Un patrón no es una solución completa sino un una guía/esqueleto que debe ser adaptado para cada problema específico.

MENSAJERÍA

La mensajería permite la comunicación asíncrona entre dos aplicaciones, las aplicaciones se comunican mediante un canal (message BUS) por donde las aplicaciones envían sus mensajes, este canal recolecta los mensajes que pueden ser compartidos por múltiples aplicaciones a la vez. Las aplicaciones pueden ser de tipo productor (crea el mensaje) y consumidor o receptor (recibe el mensaje). Los mensajes tienen una estructura de datos (encabezado, propiedades y cuerpo), estos pueden ser desde texto plano hasta archivos XML,JSON, Etc.


PATRONES DE DISEÑO PARA SERVICIOS DE MENSAJERÍA

Los patrones basados en mensajes se asemejan en cierta forma a los patrones orientados a servicios. Sin embargo, existe una diferencia clave en la forma en que podemos pensar en ellos. En el modelo orientado al servicio, nos enfocamos generalmente en el suministro de servicios que pueden ser consumidos por muchos 'clientes', es decir, tomamos una posición de proveedor a consumidor. En un modelo orientado a los mensajes, solemos enfocarnos mucho más en los datos que fluyen a través del sistema y al conjunto de acciones que deben ser aplicadas a estos datos en curso; es decir, tomamos una postura de productor a consumidor.

Mensaje

Si tenemos una empresa que tiene dos aplicaciones separadas podemos comunicarlas a través de mensajes, usando un canal de mensajes que los conecta. Esto se logra empaquetando la información como un mensaje, el cual es un registro de datos que el sistema de mensajería puede transmitir a través de un canal de mensajes.


Message Channel

Tiene como objetivo conectar dos aplicaciones mediante un sistema de mensajería.


Pipe & Filters

Se utiliza este estilo para dividir una tarea de procesamiento más grande en una secuencia de pasos más pequeños, independientes de procesamiento (filtros) que están conectados por canales (tuberías).




Content-Based Router

Se encarga de examinar el contenido de un mensaje para distribuirlo por diferentes canales en función de los datos que componen dicho mensaje. Una propiedad fundamental del mensaje Router es que no modifica el contenido del mensaje. Sólo se ocupa del destino del mensaje.






Recipient List

Encaminar un mensaje a una lista de suscriptores del mismo. Este proceso se puede dividir en 2 partes: La primera parte calcula una lista de destinatarios. La segunda parte sencillamente recorre la lista y envía una copia del mensaje recibido a cada destinatario. Al igual que un Content-Based Router, la lista de destinatarios no suelen modificar el contenido del mensaje.





Message Endpoint

Es la interfaz entre una aplicación y un sistema de mensajería. Se puede tener un punto final remitente, a veces llamado un proxy o un consumidor de servicios, que es el responsable de enviar en los mensajes, y un extremo receptor, a veces llamado endpoint o servicio, que se encarga de recibir los mensajes.





Splitter


Se utiliza para descomponer un mensaje que contiene una lista de elementos repetitivos, para que estos puedan ser procesados de forma individual.





Aggregator

Se encarga de combinar varios mensajes individuales pero que se relacionan entre ellos en un único mensaje para que puedan ser procesados de una forma global.




Message Translator

Transformación de un mensaje en otro para que pueda ser usado en un contexto diferente.




Scatter-Gather


El Scatter-Gather enruta mensajes solicitados a un número de destinatarios. A continuación, utiliza un agregador para recoger las respuestas y se las consolida en un único mensaje de respuesta.






VENTAJAS MESSAGING

El emisor desconoce quien, como y cuando se recibirá el mensaje, por lo que al no existir receptor o no estar disponible, el emisor no se ve afectado.
Permite la comunicación entre distintos equipos distribuidos con distintos sistemas operativos y lenguajes
Es asíncrona, el emisor de un mensaje no tiene que esperar que el receptor reciba el mensaje, una vez la aplicación envía el mensaje, esta sigue con el resto de sus tareas, el emisor solo espera que el mensaje llegue al sistema de mensajería.
Una vez el mensaje ingresa al sistema de mensajería este debe garantizar que el mensaje sea recibido, lo mantendrá encolado hasta que el destinatario lo pueda recibir

DESVENTAJAS MESSAGING 

Algunas aplicaciones requieren recibir los mensajes en secuencia, el sistema de mensajería puede asegurar que los mensajes serán correctamente entregados pero no garantiza que estos sean entregados en una secuencia esperada por el receptor
Utilizar un sistema de mensajería, agrega procesamiento extra.
Muchas veces se necesita invertir en hardware o procesamiento adicional.


Referencias:


http://www.enterpriseintegrationpatterns.com/toc.html

No hay comentarios.:

Publicar un comentario