Java Message Service

15
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

description

Servicio de Mensajes Java

Transcript of Java Message Service

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