Beruflich Dokumente
Kultur Dokumente
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
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.
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
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.