View
91
Download
3
Category
Preview:
DESCRIPTION
Servicio de Mensajes Java
Citation preview
J a v a A r c h i t e c t A p p l i c a t i o n D e v e l o p e r P á g i n a | 1
CIBERTEC
Capítulo 2
JMS – Java Message Service API
Al finalizar el capítulo, el alumno podrá
Conocer las principales características de la especificación JMS
para Servicios de mensajería en la plataforma Java
Implementar aplicaciones que utilicen Java Message Service API
Temas
1. JSR 914 – Java Message Service API
2. Modelo de programación y componentes
a. ConnectionFactory
b. Destination
c. Connection / Session
d. MessageProducer / MessageConsumer
e. Message
3. Principales implementaciones
4. JSR 343 – Java Message Service 2.0
J a v a A r c h i t e c t A p p l i c a t i o n D e v e l o p e r P á g i n a | 2
CIBERTEC
JMS – Java Message Service API
Capítulo 2:
JMS – Java Message Service API
Implementación de una arquitectura Java
Orientada a Mensajes
División de Alta Tecnología - DAT
Temas
1. JSR 914 – Java Message Service API
2. Modelo de programación y componentes
a. ConnectionFactory
b. Destination
c. Connection
d. Session
e. MessageProducer / MessageConsumer
3. Principales implementaciones
4. JSR 343 – Java Message Service 2.0
J a v a A r c h i t e c t A p p l i c a t i o n D e v e l o p e r P á g i n a | 3
CIBERTEC
1. JSR 914 – Java Message Service API
Capítulo 2:
JMS – Java Message Service API
Implementación de una arquitectura Java
Orientada a Mensajes
División de Alta Tecnología - DAT
Temas
1. JSR 914 – Java Message Service API
2. Modelo de programación y componentes
a. ConnectionFactory
b. Destination
c. Connection / Session
d. MessageProducer / MessageConsumer
e. Message
3. Principales implementaciones
4. JSR 343 – Java Message Service 2.0
1.1. Antecedentes
Un servicio de mensajería permite que sistemas distribuidos extiendan
su esquema de comunicación no solamente para interactuar de
manera síncrona sino también de manera asíncrona y confiable.
Dependiendo del tipo de aplicación y su arquitectura, es posible
evaluar el uso de un esquema comunicación asíncrono que a su vez
puede lograr mejoras considerables tanto en rendimiento como en
escalabilidad.
Java Message Service API es una especificación que propone una
estructura estándar para la comunicación entre aplicaciones con un
esquema síncrono y asíncrono de manera escalable, confiable,
transaccional, tolerante a fallos e independiente de plataforma y
proveedor.
J a v a A r c h i t e c t A p p l i c a t i o n D e v e l o p e r P á g i n a | 4
CIBERTEC
División de Alta Tecnología - DAT
1. JSR 914 – Java Message Service API
JSR 914 – Java Message Service APIEs una especificación que propone una estructura estándar para lacomunicación entre aplicaciones con un esquema síncrono yasíncrono de manera escalable, confiable, transaccional, tolerante afallos e independiente de plataforma y proveedor.
1.2. Características de JMS
JMS permite comunicaciones bajo los dos modelos de mensajería
manejados en cualquier Message Oriented Middleware:
El modelo “punto a punto” (point-to-point o P2P) permite que
una aplicación envíe mensajes únicamente a otra aplicación por
medio del empleo de “colas”. El originador del mensaje
(productor) envía el mensaje a una cola específica y un receptor
(consumidor) recibe el mensaje, también, desde una cola
específica.
El modelo de “publicar/suscribir” (conocido como
publish/subscribe o pub/sub) permite el envío de mensajes de
una aplicación hacia múltiples recipientes o aplicaciones. La
aplicación que genera los mensajes se denomina “publicador”
(productor) y envían los mensajes a un “tema” específico. Por
otro lado, el consumidor debe suscribirse a este “tema” para
recuperar los mensajes.
J a v a A r c h i t e c t A p p l i c a t i o n D e v e l o p e r P á g i n a | 5
CIBERTEC
División de Alta Tecnología - DAT
1. JSR 914 – Java Message Service API
Modelos de mensajería JMS
J a v a A r c h i t e c t A p p l i c a t i o n D e v e l o p e r P á g i n a | 6
CIBERTEC
2. Modelo de Programación y componentes
Capítulo 2:
JMS – Java Message Service API
Implementación de una arquitectura Java
Orientada a Mensajes
División de Alta Tecnología - DAT
Temas
1. JSR 914 – Java Message Service API
2. Modelo de programación y componentes
a. ConnectionFactory
b. Destination
c. Connection / Session
d. MessageProducer / MessageConsumer
e. Message
3. Principales implementaciones
4. JSR 343 – Java Message Service 2.0
División de Alta Tecnología - DAT
2. Modelo de programación y componentes
Interfaces Genéricas
J a v a A r c h i t e c t A p p l i c a t i o n D e v e l o p e r P á g i n a | 7
CIBERTEC
División de Alta Tecnología - DAT
2. Modelo de programación y componentes
Interfaces Point-to-Point
Interfaces Publish/Subscribe
J a v a A r c h i t e c t A p p l i c a t i o n D e v e l o p e r P á g i n a | 8
CIBERTEC
El modelo básico de programación en una aplicación JMS consiste en
siguientes componentes:
a. JMS ConnectionFactory
b. JMS Destination
c. JMS Connection
d. JMS Session
e. JMS MessageProducer
f. JMS MessageConsumer
g. JMS Message
JMS ConnectionFactory
Es la fábrica de conexiones que el cliente usa para crear una conexión
contra un proveedor.
Cada ConnectionFactory es una instancia de una de las siguientes
interfaces:
ConnectionFactory
QueueConnectionFactory
TopicConnectionFactory
JMS Destination
Es un objeto que un cliente utiliza para especificar el destino de los
mensajes que produce y el origen de los mensajes que éste consume.
En el esquema P2P, los destinos se llaman “queue”
En el esquema Pub/Sub, los destinos se llaman “topics”
JMS Connection
Una conexión se utiliza para crear una o más sesiones. Ésta
encapsula una conexión virtual a un proveedor JMS: la conexión
puede representar un socket TCP/IP abierto entre el cliente y el
proveedor de servicio.
Antes de finalizar la aplicación, se debe cerrar cualquier conexión que
haya sido previamente creada. En caso contrario, se puede causar
que los recursos no sean liberados por el JMS provider.
Cerrar la conexión, también, cierra las sesiones, y los productores y
consumidores de mensajes.
J a v a A r c h i t e c t A p p l i c a t i o n D e v e l o p e r P á g i n a | 9
CIBERTEC
JMS Session
Una sesión proporciona un contexto transaccional con el cual se
agrupa un conjunto de envíos y recepciones dentro de una unidad de
trabajo atómica. Una sesión debe ser un contexto independiente
tanto para el productor como para el consumidor. Las sesiones se
usan para crear lo siguiente:
Message producers
Message consumers
Messages
Queue browsers
JMS Message Producers
Un productor de mensajes es un objeto que es creado por una sesión
y empleado para enviar mensajes a un destino. Este objeto
implementa la interfaz MessageProducer.
A un productor se le puede asociar objetos de tipo Destination, Queue
y Topic para el posterior envío de mensajes.
También, se puede crear productores anónimos especificando “null”
como argumento. El destino se especificará al momento de enviar el
mensaje.
JMS Message Consumer
Un consumidor es un objeto creado por una sesión y empleado para
recibir mensajes que fueron enviados a un destino. Implementa la
interfaz MessageConsumer.
El consumidor de mensajes permite que el cliente JMS se asocie a un
destino de tipo Destination, Queue y Topic.
Después de crear un consumidor de mensajes, éste se convierte en
“activo” y se puede emplear para recibir mensajes. Si se utiliza el
método “close” para un MessageConsumer, el consumidor de
mensajes se convierte en “inactive”.
La transmisión de mensajes no se inicia hasta que se ejecute el
“start” de la conexión creada.
J a v a A r c h i t e c t A p p l i c a t i o n D e v e l o p e r P á g i n a | 10
CIBERTEC
El método “receive” permite consumir un mensaje de forma síncrona.
Para consumir un mensaje de forma asíncrona, se debe utilizar la
interfaz “message listener”.
JMS Message
Un mensaje JMS está compuesto de tres partes:
Header: Es la única parte obligatoria. Contiene un número
predefinido de campos que contiene valores que el cliente y el
proveedor utilizan para identificar y encaminar los mensajes.
Por ejemplo, cada mensaje tiene un identificador único en el
JMSMessageID.
Properties: Se pueden crear propiedades adicionales a las que
vienen en el header si fuera necesario.
Payload: JMS define seis tipos de interfaz de mensaje: un tipo
de mensaje base y cinco subtipos (o “messages types”). Los
tipos de mensaje se definen de acuerdo con el tipo de carga
útil del mensaje, donde la carga útil es el cuerpo de un
mensaje que incluye el contenido. JMS sólo especifica la
interfaz y no especifica la implementación. Este enfoque
permite la implementación específica de proveedor y el
transporte de mensajes al mismo tiempo que se utiliza una
interfaz común.
J a v a A r c h i t e c t A p p l i c a t i o n D e v e l o p e r P á g i n a | 11
CIBERTEC
A continuación se explica detalladamente los tipos de objetos
soportados en el Payload de un JMS Message:
J a v a A r c h i t e c t A p p l i c a t i o n D e v e l o p e r P á g i n a | 12
CIBERTEC
3. Principales implementaciones
Capítulo 2:
JMS – Java Message Service API
Implementación de una arquitectura Java
Orientada a Mensajes
División de Alta Tecnología - DAT
Temas
1. JSR 914 – Java Message Service API
2. Modelo de programación y componentes
a. ConnectionFactory
b. Destination
c. Connection / Session
d. MessageProducer / MessageConsumer
e. Message
3. Principales implementaciones
4. JSR 343 – Java Message Service 2.0
División de Alta Tecnología - DAT
3. Principales Implementaciones
J a v a A r c h i t e c t A p p l i c a t i o n D e v e l o p e r P á g i n a | 13
CIBERTEC
Glassfish JMS
Implementación de referencia de JMS que viene incluida dentro del servidor
de aplicaciones Glassfish.
ActiveMQ
Implementación libre de la especificación JMS soportada por Apache
Software Fundation.
HornetMQ
Implementación libre de la especificación JMS soportada por la comunidad
del servidor de aplicaciones JBoss.
Websphere MQ
Message Oriented Middleware propietario que proporciona una
implementación con soporte a la especificación JMS conjuntamente con el
servidor de aplicaciones Websphere.
Sonic MQ
Message Oriented Middleware propietario que proporciona una
implementación stand-alone de la especificación JMS.
J a v a A r c h i t e c t A p p l i c a t i o n D e v e l o p e r P á g i n a | 14
CIBERTEC
4. JSR 343 : Java Message Service 2.0
Capítulo 2:
JMS – Java Message Service API
Implementación de una arquitectura Java
Orientada a Mensajes
División de Alta Tecnología - DAT
Temas
1. JSR 914 – Java Message Service API
2. Modelo de programación y componentes
a. ConnectionFactory
b. Destination
c. Connection / Session
d. MessageProducer / MessageConsumer
e. Message
3. Principales implementaciones
4. JSR 343 – Java Message Service 2.0
División de Alta Tecnología - DAT
4. JSR 343 – Java Message Service 2.0
Java se encuentra trabajando en una nuevaversión de la especificación JMS quecontiene mejoras y nuevas funcionalidadesentre las cuales destacan las siguientes:
API simplificada
Inyección de dependencias
Compatible con JMS 1.0
Prescinde de JMSExceptions
Conexión, Sesión y otros objetos auto-cerrados.
Se espera que la versión final de laespecificación se publique a mediados del2013 junto con la plataforma Java EE 7.
J a v a A r c h i t e c t A p p l i c a t i o n D e v e l o p e r P á g i n a | 15
CIBERTEC
Laboratorio Nº 2
Laboratorio Nº 2
Ejercicios Prácticos
Tiempo Estimado
180 minutos
División de Alta Tecnología - DAT
Implementación de una arquitectura Java
Orientada a Mensajes
Objetivo
Implementar aplicaciones que utilicen los componentes de la
especificación JMS revisados en el presente capítulo
Recommended