Sunteți pe pagina 1din 12

Patrones Arquitectnicos

Message Queuing

Nombre

Message Queuing Cola de mensajes, tambin denominado middleware orientado a mensajes (MOM, message-oriented middleware).

Contexto

Un sistema de mensajera permite la comunicacin entre aplicaciones a travs de distintas redes, o dentro de un mismo sistema.

Problema

La mensajera es una tecnologa que permite que dos aplicaciones se comuniquen de manera confiable, asincrnica y con alto rendimiento. Al utilizar esta tecnologa las aplicaciones se comunican a travs de canales envindose paquetes de datos denominados mensajes. Un canal funciona como una coleccin de mensajes que puede ser compartido por mltiples aplicaciones y utilizado concurrentemente. Las aplicaciones actan con roles bien definidos en la comunicacin: productor y consumidor. Un productor (o emisor) es una aplicacin que enva mensajes escribindolos en un canal, mientras que un consumidor (o receptor) es una aplicacin que recibe los mensajes leyndolos del canal. En un esquema de este tipo tanto productor como consumidor no tienen que estar necesariamente disponibles al mismo tiempo para poder comunicarse. Esto se debe a que la comunicacin en si misma es llevada a cabo a travs de los denominados sistemas de mensajera. Fuerzas Los mensajes no se transmiten desde el cliente al servidor directamente, sino a travs de colas de mensajes intermedias que almacenan y envan los mensajes. Esto tiene una serie de consecuencias:
Remitentes y receptores de mensajes estn desacoplados, de manera que no necesitan saber la ubicacin de cada otro (tal vez ni siquiera la identidad). Un remitente slo pone mensajes en una cola en particular y no necesariamente sabe quien consume los mensajes. Por ejemplo, un mensaje podra ser consumido por ms de un receptor. Receptores consumen mensajes realizando un monitoreo de colas.

Solucin

Un sistema de mensajera permite la comunicacin entre aplicaciones de forma indirecta. Esto se logra mediante el envo de mensajes a un administrador de mensajes, al cual estn asociadas las aplicaciones, y es este ltimo quien se encarga de administrarlos y distribuirlos segn diversas configuraciones. El programador no especifica una aplicacin de destino a la hora de enviar mensajes, sino que especifica el nombre de una cola. Las colas de mensajes nos brinda una API (Interface) para que los programas clientes reciban y enven mensajes desde y hacia las colas (queues) sin poseer una conexin privada y dedicada para ellos. Una aplicacin puede tener una o ms colas de entrada y una o diversas colas de salida. El Arquitecto no debe preocuparse acerca de la tecnologa existente en la aplicacin destino, o si la aplicacin destino no se encuentra disponible (en el caso de los mensajes asincrnicos), sino que el motor de colas se encarga de reenviar el mensaje si la misma se encuentra detenida o bien de iniciarla dependiendo del caso.

Estructura

Los recuadros identificados como A y B representan aplicaciones que envan y reciben mensajes. Las cajas entre las Queue y las aplicaciones A y B representan la Message Queuing Interface (API), que es uno de los componente de la arquitectura. La API permite la interaccin con el Queue Manager (representado por las cajas grises centrales) que es el administrador del sistema de mensajera.

La siguiente ilustracin muestra dos aplicativos que corren en una misma mquina con un solo Queue Manager.

Otro enfoque es el caso de dos aplicativos donde cada uno est asociado a un Queue Manager distinto. Este enfoque involucra la existencia de dos Queue Manager y una comunicacin especial entre ellos. Los Queue Manager puede estar en una misma o en distintas maquinas

Implementacin

Para la implementacin de este patrones se necesitan las siguientes partes:


Aplicaciones que acten como clientes de la cola de mensajes, ya sea como productores o consumidores. Queue Manager, aplicacin que es la encargada de manejar la cola de mensaje as como el envi y la recepcin de mensajes. Forman parte de la Queue Manager, la cola de mensajes, utilizada por los clientes para almacenar los mensajes, esta puede ser local, si esta en el mismo Queue Manager donde esta conectado el cliente o remota si se encuentra en otro Queue Manager. Canales, canales de comunicacin lgica, pueden ser para comunicarse con clientes de la cola de mensajes, as como tambin para comunicarse con otras Queue Manager.

Variantes: Modelos de Mensajera Punto a Punto


En este modelo, los mensajes son enviados hacia un destino especfico, por lo general, el nombre de una cola, donde son extrados por la aplicacin. Es decir, hay un mapeo uno a uno entre el emisor y el receptor. La cola retiene todos los mensajes hasta que estos son extrados o bien expiran por tiempo. Este modelo posee las siguientes caractersticas:
Cada mensaje tiene un solo consumidor. El emisor y receptor no tienen dependencia de tiempo. El receptor puede obtener el mensaje independientemente si este estaba ejecutando cuando el emisor envi el mensaje. El receptor notifica cuando el mensaje fue consumido exitosamente.

Variantes: Modelos de Mensajera


Publish/Subscribe Cuando se necesita un mayor control sobre los mensajes que deben recibir determinados servicios, se necesita la funcin de Publicacin/suscripcin. Los sistemas de Publicacin/suscripcin suelen proporcionar un entorno seguro y escalable en el que muchos suscriptores se pueden registrar para recibir mensajes de muchos publicadores. Puntualmente, este modelo describe a un emisor que enva un mensaje a una cola de destino. A esta cola de destino estn suscriptas uno o ms clientes, a los cuales les ser enviado una copia del mensaje original.

Variantes: Patrones de Mensajera


Productores de Mensajes

En este enfoque, la aplicacin cliente se conecta al manager de colas, enva el mensaje y se desconecta. De esta manera se despreocupa del estado del mensaje enviado. Consumidores de Mensajes

Los consumidores operan de alguno de los siguientes modos:


Pull Mode: La aplicacin receptora se conecta al manager a fin de obtener el mensaje. De antemano desconoce si existe o no mensajes para extraer. Por esa razn es que debe sondear su cola asociada cada determinado perodo de tiempo.

Push Mode: En este caso es el manager de colas quien inicia la comunicacin cuando llega un mensaje para la aplicacin cliente.

Consecuencias
Beneficios

Bajo acoplamiento: Uno de los principales beneficios de los sistemas de mensajera es el bajo acoplamiento.
A nivel de procesos se debe a que el proceso emisor no se tiene que preocupar por el estado del receptor, de eso se encarga el queue manger. A nivel de aplicaciones, estas no tiene que adaptar su forma de comunicacin segn la interfaz del receptor, solo deben hacerlo al manager de colas, el cual se comunica mediante estndares abiertos y bien conocidos.

Desventajas

Recursos mal aprovechados: Mal aprovechamiento de recursos por parte del cliente.

S-ar putea să vă placă și