JMS - Tensho97/Aprende-a-Aprender GitHub Wiki

JMS o Java Messaging System, es un sistema de mensajería basado en MQ, protocolo diseñado por IBM para comunicaciones asíncronas.

Una comunicación es síncrona cuando se espera por una respuesta de la otra parte de la comunicación. Ejemplos de este tipo de comunicación son HTTP, Rest o Soap.

Por otro lado una comunicación asíncrona no espera respuesta por parte del destinatario y en caso de que el destinatario envíe respuesta no es necesario que sea inmediata.

Dicho esto JMS es una tarea encolada y abandonada dado que no se espera respuesta y en caso de que se envíe respuesta, esta usará una cola distinta (ASINCRONA).


JMS se separa de las APIs propietarias de cada proveedor para ofrece un API estándar (mediante un conjunto de interfaces) para la mensajería empresarial, de modo que mediante Java podamos enviar y recibir mensajes sin atarnos a ningún proveedor. JMS además minimiza el conocimiento de mensajería empresarial que debe tener un programador Java para desarrollar complejas aplicaciones de mensajería, mientras mantiene la portabilidad entre las diferentes implementaciones de proveedores JMS.

Cuidado, JMS no es un MOM. Se trata de una especificación que abstrae la interacción entre los clientes de mensajería y los MOMs del mismo modo que JDBC abstrae la comunicación con las BBDD relacionales. El siguiente gráfico muestra como JMS ofrece un API que utilizan los clientes de mensajería para interactuar con MOMs específicos via proveedores JMS que manejan la interacción con el MOM específico. De este modo, JMS reduce la barrera para la creación de aplicaciones de mensajería, facilitando la portabilidad a otros proveedores JMS.

JMS permite que la comunicación entre componentes sea débilmente acoplada, asíncrona (el proveedor JMS entrega los mensajes al destino conforme llegan, y el cliente no tiene que solicitar los mensajes para recibirlos) y fiable (JMS asegura que cada mensaje se entrega una y solo una vez, y mediante inferiores niveles de fiabilidad permite la pérdida o el duplicado de mensajes en aquellas aplicaciones que requieran menos control).

El esquema de trabajo con las interfaces JMS queda claramente definido en el siguiente gráfico:

Existen dos modelos/dominios/APIs de mensajería:

Véase también



Autor : Miguel