Ingeniería del software II

22
IS II Sistemas Distribuidos 1 Ingeniería del software II Middleware Orientado a Mensajes JMS

description

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. - PowerPoint PPT Presentation

Transcript of Ingeniería del software II

Page 1: Ingeniería del software II

IS II Sistemas Distribuidos 1

Ingeniería del software II

Middleware Orientado a Mensajes JMS

Page 2: Ingeniería del software II

IS II Sistemas Distribuidos 2

¿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

Page 3: Ingeniería del software II

IS II Sistemas Distribuidos 3

¿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

Page 4: Ingeniería del software II

IS II Sistemas Distribuidos 4

¿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

Page 5: Ingeniería del software II

IS II Sistemas Distribuidos 5

¿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.

Page 6: Ingeniería del software II

IS II Sistemas Distribuidos 6

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.

Page 7: Ingeniería del software II

IS II Sistemas Distribuidos 7

Arquitectura Centralizada

Page 8: Ingeniería del software II

IS II Sistemas Distribuidos 8

Arquitectura distribuida Las arquitecturas distribuidas usan

IP Multicast para distribuir los mensajes.

Page 9: Ingeniería del software II

IS II Sistemas Distribuidos 9

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

Page 10: Ingeniería del software II

IS II Sistemas Distribuidos 10

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.

Page 11: Ingeniería del software II

IS II Sistemas Distribuidos 11

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.

Page 12: Ingeniería del software II

IS II Sistemas Distribuidos 12

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".

Page 13: Ingeniería del software II

IS II Sistemas Distribuidos 13

JMS: Modelo pub/sub

Page 14: Ingeniería del software II

IS II Sistemas Distribuidos 14

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.

Page 15: Ingeniería del software II

IS II Sistemas Distribuidos 15

JMS: Modelo p2p

Page 16: Ingeniería del software II

IS II Sistemas Distribuidos 16

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

Page 17: Ingeniería del software II

IS II Sistemas Distribuidos 17

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

Page 18: Ingeniería del software II

IS II Sistemas Distribuidos 18

JMS: Anatomía de mensajes Un mensaje esta compuesto por 3

partes: Cabeceras Propiedaes datos

Page 19: Ingeniería del software II

IS II Sistemas Distribuidos 19

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

Page 20: Ingeniería del software II

IS II Sistemas Distribuidos 20

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.

Page 21: Ingeniería del software II

IS II Sistemas Distribuidos 21

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.

Page 22: Ingeniería del software II

IS II Sistemas Distribuidos 22

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