Sei sulla pagina 1di 5

JMS Introduccin Un sistema de mensajes es un mtodo de comunicacin entre componentes de software o aplicaciones.

Un cliente puede enviar, recibir, crear y leer mensajes de otros clientes, conectndose a un agente de mensajera. Los sistemas de mensajes aportan una serie de mejoras a la comunicacin entre aplicaciones que no tienen por que residir en la misma mquina. Un componente enva un mensaje a un destino, y el receptor puede recoger el mensaje de este. No es necesario que estn disponibles al mismo tiempo para comunicarse. De hecho el que manda y el que recibe no necesitan saber nada el uno del otro, solo el formato del mensaje, y el destino a usar. El API JMS permite la comunicacin que no es solo escasamente acoplada, sino tambin: - Asncrona. Un proveedor de JMS puede entregar mensajes a un cliente segn llegan estos, sin necesidad de que el cliente tenga que solicitarlos. - Segura. Asegura que un mensaje es entregado una y solo una vez. Existen niveles ms bajos de seguridad para aplicaciones que pueden permitirse el perder algn mensaje o recibirlos duplicados. Cmo trabaja el API JMS con la plataforma JEE? El API JMS tiene las siguientes caractersticas: - Aplicaciones cliente, componentes JavaBean empresariales (EJB) y componentes Web pueden enviar y recibir sncronamente mensajes JMS. Las aplicaciones cliente pueden recibir mensajes JMS de manera asncrona. (No son necesarios Applets para soportar el API JMS). - Una nueva clase de bean, el Message-Driven bean, permite la consumicin asncrona de mensajes. El proveedor JMS puede opcionalmente implementar procesos de mensajes concurrentes con message-driven beans. - Mensajes recibidos y enviados pueden participar en transacciones distribuidas.

CONCEPTOS BSICOS DE JMS


Arquitectura de JMS
Una aplicacin JMS, esta compuesta por las siguientes partes: Un proveedor JMS es un sistema de mensajes que implementa las interfaces de JMS y proporciona caractersticas administrativas y de control Clientes JMS son los programas o componentes escritos en Java que producen y consumen mensajes. Mensajes son los objetos que trasladan informacin entre clientes. Objetos Administrados que son objetos JMS preconfigurados, creados por el administrador para el uso de los clientes. Los 2 tipos de son connection factories y destinations, explicados mas adelante. Clientes Nativos que son programas que usan los productos de la API de clientes nativos en vez de el API JMS.

Las herramientas administrativas te permiten asociar los objetos administrados (destinations y connection factories) en el dominio de nombre Java Naming and Directory Interface (JNDI). Un cliente JMS puede buscar objetos administrados en el dominio de nombres y luego establecer una conexin lgica con los mismos objetos a travs del proveedor JMS.

Dominios de Mensaje
Antes de la existencia del API JMS, la mayora de los productos de mensajera soportaban tanto el enfoque punto a punto como el orientado a suscripcin (publish/subscribe). La especificacin de JMS ofrece un dominio separado para cada enfoque. De hecho, la mayora de las actuales implementaciones del API JMS, ofrecen soporte para ambos dominios, y algunos clientes JMS combinan el uso de ambos, en una sola aplicacin. En este camino, el API JMS ha extendido el poder y la flexibilidad de los productos de mensajera.

Dominio Punto a Punto


Un producto o aplicacin punto a punto (PTP) esta construido alrededor del concepto de colas, remitentes y destinatarios. Cada mensaje esta dirigido a una determinada cola y los destinatarios cogen los mensajes de las colas destinadas a recogerlos.

Caractersticas de PTP: o Cada mensaje solo tiene un consumidor. o Remitente y destinatario de un mensaje no tienen dependencias de tiempo. o El destinatario notifica el procesamiento correcto del mensaje. Se usar el sistema de mensajes punto a punto cuando todos los mensajes enviados deben ser procesados correctamente por el consumidor.

Dominio orientado a suscripcin (Publish/Subscribe)


En un producto o aplicacin orientado a suscripcin, los clientes direccionan los mensajes a un topic (tema). Editores (publisher) y suscriptores (subscribers) son generalmente annimos y pueden publicar o suscribir determinados temas. El sistema cuida en distribuir los mensajes que llegan de mltiples emisores, para sus mltiples suscriptores. Los topics mantienen los mensajes tanto tiempo como tardan en distribuirlos a sus suscriptores. Caractersticas de Publish/Subscribe o Cada mensaje puede tener mltiples consumidores. o Emisores y suscriptores tiene dependencia temporal. Un cliente suscrito a un tema solo puede consumir los mensajes publicados despus de la creacin de la suscripcin, y el suscriptor debe continuar activo para consumir los mensajes. El API JMS relaja esta dependencia temporal mediante la posibilidad de crear suscripciones duraderas. Estas suscripciones permiten recibir mensajes enviados mientras los suscriptores no estn activos. Proporcionan la flexibilidad y seguridad de las colas pero permiten a los clientes enviar mensajes a muchos receptores.

PROGRAMACIN CON EL API JMS


La construccin bsica de una aplicacin JMS se divide en los siguientes bloques: _Objetos administrados: _ Conexiones _ Sesiones _ Productores de Mensajes _ Consumidores de Mensajes

Objetos Administrados Los objetos administrados son el punto al que se comunican los clientes JMS para enviar o recibir mensajes, se denominan objetos administrados porque los crea el administrador. La tecnologa subyacente a estos objetos difiere de una aplicacin JMS a otra. Implementan las interfaces JMS y se sitan en el espacio de nombres de JNDI para que los clientes puedan solicitarlos. Hay dos tipos de objetos administrados en JMS: _ ConnectionFactory: - Se usa para crear una conexin al proveedor del sistema de mensajes. - Encapsula un conjunto de parmetros de configuracin de conexin previamente definidos por el administrador. _ Destination: - Son los objetos que el cliente usa para especificar los destinos (topic) de los mensajes que se envan y el recipiente de los mensajes que se reciben (queue). - Una aplicacin JMS puede usar multiples queue y/o topic

Conexiones Encapsula una conexin virtual con un proveedor JMS, que podra ser un socket abierto TCP/IP entre un cliente y un demonio suministrador de dicho servicio. Cuando una aplicacin se completa es necesario cerrar la conexin. Al cerrarla tambin se cierran las sesiones, sus productores de mensajes y sus consumidores de mensajes. Sesiones Es el contexto de un hilo simple para producir y crear mensajes. Suministra un contexto transaccional. Productores de Mensajes Es un objeto creado por una sesin y se usa para enviar mensajes a un destinatario. Se pueden crear productores indefinidos, pudiendo omitir temporalmente el destino de los mensajes a enviar hasta que estos se enven o se publiquen. Consumidores de Mensajes Es un objeto creado por una sesin usado para recibir mensajes enviados a un destino. Una vez creado, se activa y puede ser utilizado para recibir mensajes. Se pueden recibir mensajes de forma sncrona (QueueReceiver,TopicSubscriber) o de forma asncrona (message listener). Message Listener Es un objeto que acta como un manejador de eventos asncronos. Implementa la interfaz MessageListener el cual contiene el mtodo onMessage, en le que se definen las acciones a realizar cuando lleguen los mensajes. Un mismo listener puede obtener mensajes tanto de una queue o un topic, dependiendo de cmo se ha iniciado el objeto. Se puede utilizar un selector de mensajes para filtrar los mensajes recibidos. Esta tarea se asigna al proveedor JMS y no a la aplicacin El consumidor de mensajes slo recibir aquellos mensajes cuyas cabeceras y propiedades igualen las del selector.

Ver implementacin en diapositivas.

Potrebbero piacerti anche