JMS: Qué es

JMS (Java Message Service) es un API que forma parte de la plataforma J2EE para acceder a Sistemas de mensajería (MOM).

JMS permite a los componentes de aplicaciones crear, enviar, recibir y leer mensajes. JMS en ese sentido es análogo a JDBC: JMS ofrece un interfaz de acceso común a diferentes MOMs.

Las implementaciones JMS soportan acceso a mensajería P2P y Publish/Suscribe.

Mensajería Point-to-Point (PTP o P2P)

o Se utiliza para envío de mensajes de uno a uno de forma síncrona o asíncrona mediante vías virtuales llamadas colas (queues).

o No existen dependencias temporales entre el consumidor y el productor.

o El receptor envía un acuse de recibo cuando procesa el mensaje.

o Puede haber varios clientes en una cola, pero sólo uno puede recibir cada mensaje. El bus JMS se encarga de realizar la labor de que cada mensaje sea solo “consumido” por un receptor de la cola.

Mensajería Publish-and-Subscribe (P / S)

o Esta pensado para broadcast de mensajes de uno-a-muchos para un tema fijado.

o El emisor no sabe cuantos clientes reciben los mensajes enviados, pudiendo todos los receptores recibir una copia del mensaje.

o Existe dependencia temporal entre el productor y los consumidores.

Mecanismos de Notificación JMS

Para notificar que un mensaje se ha consumido se puede utilizar el campo JMSReplyTo: en la cabecera del mensaje JMS a enviar (Message Header Fields) existe un campo llamado JMSReplyTo, que especifica la cola o tema al cuál los mensajes de respuesta pueden enviarse. Se usa junto al campo JSMCorrelationID para coordinar los mensajes de petición / respuesta.

La cola a la cual se responde puede ser una Cola P2P Temporal que sólo existe por el tiempo de la Conexión o bien una Cola Publish/Suscribe Permanente, en este caso se deben filtrar los mensajes de respuesta que pertenecen a un cliente registrando un filtro en el Servidor JMS. Cada cliente deberá introducir en un mensaje una propiedad propia para distinguir. Todos los mensajes de respuesta son enviados al mismo tema de respuesta independientemente del cliente.

Deja un comentario