Ingeniería del software II
Middleware Orientado a Mensajes
JMS
IS II
Sistemas Distribuidos
1
¿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:


IS II
Cabeceras
datos
Sistemas Distribuidos
2
¿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:



IS II
Tolerancia a fallos
Transacciones
Escalabilidad
Sistemas Distribuidos
3
¿Que es MOM?

En un MOM las aplicaciones intercambian
mensajes a través de canales virtuales:
destinations


IS II
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
4
¿Que es MOM?



IS II
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
5
Arquitectura de un MOM


IS II
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
6
Arquitectura Centralizada
IS II
Sistemas Distribuidos
7
Arquitectura distribuida

IS II
Las arquitecturas distribuidas usan IP
Multicast para distribuir los mensajes.
Sistemas Distribuidos
8
Implementaciones de MOM

Los siguientes productos son ejemplos de
distintas implementaciones de un sistema
MOM:







IS II
IBM: MQSeries
Progress: SonicMQ
Fiorano: FioranoMQ
Softwired: iBus
Sun Microsystems: Java Message Queue
BEA: WebLogic Server
ExoLab:OpenJMS
Sistemas Distribuidos
9
Java Message Service



IS II
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
10
Java Message Service


IS II
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
11
JMS: Messaging Models

JMS nos proporciona dos modelos distintos
de mensajería:



IS II
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
12
JMS: Modelo pub/sub
IS II
Sistemas Distribuidos
13
JMS: Modelo pub/sub




IS II
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
14
JMS: Modelo p2p
IS II
Sistemas Distribuidos
15
JMS: Modelo p2p




IS II
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
16
JMS: Modelo p2p


IS II
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
17
JMS: Anatomía de mensajes

Un mensaje esta compuesto por 3
partes:



IS II
Cabeceras
Propiedaes
datos
Sistemas Distribuidos
18
JMS: Anatomía de mensajes

Cabeceras (Headers)


Todos los mensajes JMS tienen una serie
de cabeceras estándar.
Existen dos tipos de cabeceras:


IS II
Las que se asignan automáticamente, ej:
JMSMessageID, JMSTimeStamp
Las asignadas por el usuario del API:
JMSReplyTo, JMSCorrelationID y JMSType
Sistemas Distribuidos
19
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:


IS II
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
20
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”

IS II
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
21
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:






IS II
Message
TextMessage
ObjectMessage
BytesMessage
MapMessage
StreamMessage
Sistemas Distribuidos
22
Descargar

OD4