230 likes | 490 Views
Ingeniería del software II. Middleware Orientado a Mensajes JMS. ¿Que es MOM?. Un ejemplo de sistema de mensajería que todos conocemos es el e-mail. El e-mail es un sistema de comunicación persona-persona mientras que los MOM’s tratan de comunicaciones aplicación-aplicación.
E N D
Ingeniería del software II Middleware Orientado a Mensajes JMS Sistemas Distribuidos
¿Que es MOM? • Un ejemplo de sistema de mensajería que todos conocemos es el e-mail. El e-mail es un sistema de comunicación persona-persona mientras que los MOM’s tratan de comunicaciones aplicación-aplicación. • Estos sistemas permiten que las aplicaciones intercambien información en forma de mensajes, un mensaje esta compuesto por: • Cabeceras • datos Sistemas Distribuidos
¿Que es MOM? • Los MOM’s aseguran que los mensajes son distribuidos adecuadamente entre las distintas aplicaciones, por lo general suelen proporcionar otras características importantes como: • Tolerancia a fallos • Transacciones • Escalabilidad Sistemas Distribuidos
¿Que es MOM? • En un MOM las aplicaciones intercambian mensajes a través de canales virtuales: destinations • Cuando se envía un mensaje no se envía a una aplicación concreta sino a un determinado destination • Las aplicaciones receptoras de los mensajes deben registrar su interés por recibir los mensajes dirigidos a un destination Sistemas Distribuidos
¿Que es MOM? • En un MOM los mensajes son enviados de forma asíncrona. • El encargado de enviar el mensaje no tiene que esperar una respuesta, envía el mensaje y sigue procesando. • Los mensajes son tratados como unidades auto-contenidas. Contienen todos los datos necesarios para que puedan ser procesados. Sistemas Distribuidos
Arquitectura de un MOM • Las distintas implementaciones actuales de MOM están basadas en diferentes arquitecturas, desde arquitecturas con un servidor de mensajes centralizado a arquitecturas descentralizadas que distribuyen el proceso entre los clientes. • Un sistema de mensajería esta compuesto por los clientes y el propio MOM. Un cliente es cualquier aplicación que envié o reciba mensajes del MOM. Sistemas Distribuidos
Arquitectura Centralizada Sistemas Distribuidos
Arquitectura distribuida • Las arquitecturas distribuidas usan IP Multicast para distribuir los mensajes. Sistemas Distribuidos
Implementaciones de MOM • Los siguientes productos son ejemplos de distintas implementaciones de un sistema MOM: • IBM: MQSeries • Progress: SonicMQ • Fiorano: FioranoMQ • Softwired: iBus • Sun Microsystems: Java Message Queue • BEA: WebLogic Server • ExoLab:OpenJMS Sistemas Distribuidos
Java Message Service • JMS es un API estándar de la plataforma java para construir aplicaciones que utilicen sistemas de mensajería. • JMS no es un sistema de mensajería, es un conjunto de las clases y interfaces que necesita un cliente para comunicarse con un sistema de mensajería. • De forma análoga a como el API JDBC permite acceder a diferentes bases de datos JMS permite acceder a diferentes sistemas de mensajería. Sistemas Distribuidos
Java Message Service • Gracias a JMS se puede construir aplicaciones portables entre distintos MOM’s. • La gran mayoría de implementaciones de MOM soportan el API JMS, lo que en la practica permite construir aplicaciones que usen un paradigma de comunicación basado en mensajes independientemente del producto MOM concreto que se use. Sistemas Distribuidos
JMS: Messaging Models • JMS nos proporciona dos modelos distintos de mensajería: • publicación/subscripción abreviadamente "pub/sub” • comunicación punto a punto abreviadamente "p2p“ • Como primera aproximación: el modelo publicación/subscripción está pensado para una comunicación "uno a muchos" mientras que el modelo punto a punto lo está para comunicaciones "uno a uno". Sistemas Distribuidos
JMS: Modelo pub/sub Sistemas Distribuidos
JMS: Modelo pub/sub • En el modelo pub/sub un productor envía un mensaje a un canal virtual llamado tópico. • Los consumidores pueden subscribirse a dicho tópico, con lo que recibirían una copia del mensaje. • Todos los mensajes enviados a un tópico son entregados a todos los receptores. • En este modelo se conoce al productor como publicador y al consumidor como subscriptor. Sistemas Distribuidos
JMS: Modelo p2p Sistemas Distribuidos
JMS: Modelo p2p • Los clientes JMS envían mensajes a través de canales virtuales llamados colas. • Aquí se conoce a los productores como emisores y a los consumidores como receptores. • En este modelo los receptores chequean la cola para ver si han recibido algún mensaje. • En una cola puede haber más de un receptor esperando mensajes, aunque solamente uno de ellos va a consumir cada mensaje Sistemas Distribuidos
JMS: Modelo p2p • La especificación no define las reglas que deben seguirse para la distribución de los mensajes entre los receptores, así que cada fabricante realiza su propia implementación. • Este modelo ofrece un explorador de colas mediante el cual el receptor es capaz de examinar los mensajes pendientes antes de consumirlos Sistemas Distribuidos
JMS: Anatomía de mensajes • Un mensaje esta compuesto por 3 partes: • Cabeceras • Propiedaes • datos Sistemas Distribuidos
JMS: Anatomía de mensajes • Cabeceras (Headers) • Todos los mensajes JMS tienen una serie de cabeceras estándar. • Existen dos tipos de cabeceras: • Las que se asignan automáticamente, ej: JMSMessageID, JMSTimeStamp • Las asignadas por el usuario del API: JMSReplyTo, JMSCorrelationID y JMSType Sistemas Distribuidos
JMS: Anatomía de mensajes • Propiedades • Son propiedades definidas por el usuario que pueden servir para posteriormente filtrar los mensajes que recibe un destinatario. • Ejemplo: en un programa de chat podríamos definir las siguientes propiedades: • Usuario: con el nombre del usuario que enviá el mensaje • Destinatario: podría llevar el nombre de un destinario para enviar mensajes privados o “todos” en caso de que sea un mensaje que se envíe a todo el mundo. Sistemas Distribuidos
JMS: Message Selectors • El subscribirse a un tópico o cola puedo indicar un Message Selector para filtrar los mensajes que voy a recibir en función de sus atributos, estos selectores son expresiones booleanas. • Ejemplo: con los dos atributos que hemos definido para el char podriamos crear un selector como: Destinatario = “mi_nombre_usuario” or Destinatario = “todos” • Con este selector recibiría los mensajes para todo el mundo y los dirigidos a mi en exclusiva, además no recibiremos los mensajes privados dirigidos a otros usuarios. Sistemas Distribuidos
JMS: Anatomía de mensajes • Datos (Payload) • Dentro de JMS se definen 6 tipos de mensajes en función del tipo de datos que pueden contener: • Message • TextMessage • ObjectMessage • BytesMessage • MapMessage • StreamMessage Sistemas Distribuidos