JMS CON GLASSFISH

Posted: lunes, 29 de noviembre de 2010 by Skuarch in Etiquetas: , , , , , ,
0



Requerimientos
Para poder realizar este ejemplo se nececita de las siguientes apis dentro de tu classpath

appserv-rt.jar
appserv-admin.jar
appserv-deployment-client.jar
appserv-ext.jar
javaee.jar
j2ee.jar (glassfish 3)
imqjmsra.jar

Como ide se uso netbeans

Estas apis las puedes encontrar en la carpeta lib de glassfish, por ejemplo /opt/glassfish/lib y tambien nececitamos el servidor de applicaciones Glassfish 3

Java Message Service, es un sistema de mensajes que consite en dejar un mensaje en el servidor para ser consumido por un cliente (o consumidor), el mensaje puede ser consimido instantaneamente o a la hora que sea. La comunicacion que se realiza es asincrona. La siguiente images ilustra un servicio de mensajes para un chat.



En la imagen se puede apreciar (en una vision general) que el mensaje esta en el servidor y varios clientes/consumidores consultan ese mensaje, el mensaje permanece en el servidor el tiempo necesario, esto se puede configurar, por ejemplo el tiempo de vida del mensaje y la cantidad de clientes/consumidores que lo pueden consultar.

Las colas, los mensajes son guardados en colas. Una cola de mensajes es un lugar común donde algunas aplicaciones publican mensajes, que son consumidos por otras. Existen así 4 componentes principales en un sistema de mensajería:

publicador, es decir, quien publica un Mensaje en una Cola
consumidor, quien consume Mensajes de una Cola
mensaje, que tiene algún formato que tanto publicador como consumidor conocen.
cola, que es el lugar donde publicadores y consumidores se conectan y comunican a través de mensajes.
Es importante destacar que es un sistema asíncrono: el publicador y el consumidor no necesitan estar disponibles a la vez, ya que la cola actúa de intermediario, guardando y distribuyendo los mensajes a medida que el consumidor pueda atenderlos. [esta parte fue extraida de Dos ideas JMS]

Tipo Queue (publicadores y consumidores)

Este tipo de cola sigue la filosofia de el primero que entra es el primero en salir, y los mensajes se van guardando si nadie los consume.Queue es del tipo punto a punto.



Tipo Topic (publicador/subscritor)

Este tipo de cola, es muy similar a la subscripcion a una revista, los consumidores (suscritos a la cola) reciben los mensajes del servidor, y cuando se desconectan se pierden los mensajes.



Tipos de mensajes no solo se pueden mandar mensajes de texto TextMessage si no que tambien se pueden mandar MapMessage que son del tipo clave=valor, tambien existen los ObjectMessage para poder enviar objectos a la cola.

Ejemplo usando Queue

Para este ejemplo se utilizo Glassfish 3, y lo primero que vamos a hacer es crear un recurso JMS, accedemos a nuestro glassfish y en la parte de de Resources >> JMS Resources como se muestra en la imagen



connection factory permite a una aplicacion crear objectos JMS programadamente, seleccionamos esa opcion como se muestra en la imagen anterior. Damos click en el boton de new y ponemos los datos que muestra la imagen



Lo que se realizo fue ponerle un nombre al pool (factoryUno) y el typo (javax.jms.QueueConnectionFactory), los demas parametros se dejaron como estaban y presionar el boton de ok.

Para poder acceder a este recurso es necesario ponerle un nombre. Tenemos que crear el Destination Resource poniendole un nombre JNDI, el destino fisico y el tipo.



Damos click en el botn new y colocamos los parametros como muestra la imagen.



Los parametros configurados son: jndi name = jndi/factoryUno, Physical Destination Name = jndi/factoryUno, Resource Type = javax.jms.Queue y damos en el boton ok.

Clase PublicadorQueue