Articulo de referencia

Mensajería de Yakarta

Jakarta Messaging (anteriormente Java Message Service o JMS ) es una interfaz de programación de aplicaciones (API) de Java para middleware orientado a mensajes . Proporciona mo...

Jakarta Messaging (anteriormente Java Message Service o JMS ) es una interfaz de programación de aplicaciones (API) de Java para middleware orientado a mensajes . Proporciona modelos de mensajería genéricos, capaces de manejar el problema productor-consumidor , que pueden utilizarse para facilitar el envío y la recepción de mensajes entre sistemas de software . [ 1 ] Jakarta Messaging forma parte de Jakarta EE y fue definida originalmente por una especificación desarrollada en Sun Microsystems antes de ser guiada por el Java Community Process . [ 2 ]

Idea general de la mensajería

La mensajería es una forma de comunicación distribuida débilmente acoplada , donde en este contexto el término "comunicación" se entiende como el intercambio de mensajes entre componentes de software. Las tecnologías orientadas a mensajes buscan flexibilizar la comunicación fuertemente acoplada (como los sockets de red TCP , CORBA o RMI ) mediante la introducción de un componente intermediario. Este enfoque permite que los componentes de software se comuniquen entre sí indirectamente. Entre sus ventajas se incluye que los remitentes de mensajes no necesitan conocer con precisión a sus receptores.

Las ventajas de la mensajería incluyen la capacidad de integrar plataformas heterogéneas, reducir los cuellos de botella del sistema, aumentar la escalabilidad y responder más rápidamente a los cambios. [ 3 ]

Historial de versiones

Elementos

Los siguientes son elementos JMS: [ 19 ]

Proveedor de JMS
Implementación de la interfaz JMS para middleware orientado a mensajes (MOM). Los proveedores se implementan como una implementación Java JMS o como un adaptador a un MOM que no utiliza Java.
Cliente JMS
Una aplicación o proceso que produce y/o recibe mensajes.
Productor/editor de JMS
Un cliente JMS que crea y envía mensajes.
Consumidor/suscriptor de JMS
Un cliente JMS que recibe mensajes.
Mensaje JMS
Un objeto que contiene los datos que se transfieren entre clientes JMS.
Cola JMS
Un área de almacenamiento temporal que contiene mensajes enviados que esperan ser leídos (por un único consumidor). Como su nombre indica, los mensajes se entregan en el orden en que se enviaron. Una cola JMS garantiza que cada mensaje se procese solo una vez.
Tema de JMS
Un mecanismo de distribución para publicar mensajes que se entregan a múltiples suscriptores.

Modelos

La API JMS admite dos modelos distintos:

  • De punto a punto
  • Publicar y suscribirse

Modelo punto a punto

En el sistema de mensajería punto a punto , los mensajes se enrutan a consumidores individuales que mantienen colas de mensajes entrantes. Este tipo de mensajería se basa en el concepto de colas de mensajes , remitentes y receptores. Cada mensaje se dirige a una cola específica, y los clientes receptores extraen los mensajes de las colas establecidas para almacenarlos. Si bien cualquier número de productores puede enviar mensajes a la cola, se garantiza que cada mensaje se entregará y será consumido por un único consumidor. Las colas retienen todos los mensajes que se les envían hasta que se consumen o hasta que caducan. Si no hay consumidores registrados para consumir los mensajes, la cola los retiene hasta que un consumidor se registre para consumirlos.

Modelo de publicación y suscripción

El modelo de publicación y suscripción permite publicar mensajes sobre un tema específico. Los suscriptores pueden registrar su interés en recibir mensajes sobre dicho tema. En este modelo, ni el publicador ni el suscriptor se conocen. Un buen ejemplo sería un tablón de anuncios anónimo.

  • El mensaje será recibido por cero o más consumidores.
  • Existe una dependencia temporal entre publicadores y suscriptores. El publicador debe crear un tema de mensajes para que los clientes se suscriban. El suscriptor debe permanecer activo continuamente para recibir mensajes, a menos que haya establecido una suscripción duradera. En ese caso, los mensajes publicados mientras el suscriptor no esté conectado se redistribuirán cuando se vuelva a conectar.

JMS permite separar la aplicación de la capa de transporte de datos. Las mismas clases Java pueden utilizarse para comunicarse con diferentes proveedores JMS mediante la información de la Interfaz de Nombres y Directorios de Java (JNDI) del proveedor deseado. Las clases primero utilizan una fábrica de conexiones para conectarse a la cola o tema, y ​​luego rellenan y envían o publican los mensajes. En el lado receptor, los clientes reciben o se suscriben a los mensajes.

esquema URI

El RFC 6167 define un jms:esquema URI para el Servicio de Mensajería de Java.

Implementaciones de proveedores

Para usar JMS, es necesario contar con un proveedor JMS que pueda gestionar las sesiones, las colas y los temas. A partir de la versión 1.4 de Java EE, todos los servidores de aplicaciones Java EE deben incluir un proveedor JMS. Esto se puede implementar mediante la gestión del flujo de mensajes de la arquitectura de conectores de Java EE , disponible por primera vez en esa versión.

A continuación se muestra una lista de proveedores JMS comunes:

Véase también

Referencias

  1. Curry, Edward. 2004. «Middleware orientado a mensajes» . En Middleware para comunicaciones, ed. Qusay H Mahmoud, 1-28. Chichester, Inglaterra: John Wiley and Sons. doi : 10.1002/0470862084.ch1 . ISBN 978-0-470-86206-3
  2. "JSR 914: API del Servicio de Mensajería Java (JMS)" . Programa del Proceso de la Comunidad Java . Consultado el 31 de julio de 2018 .
  3. ^ Richards y otros, páginas 3–5.
  4. 1 2 "Java Message Service" (PDF) . Sun Microsystems . 5 de octubre de 1998. Archivado (PDF) del original el 24 de febrero de 1999. Recuperado el 31 de julio de 2018 .
  5. "Documentación del Servicio de Mensajería de Java" . Sun Microsystems. 30 de octubre de 1998. Archivado del original el 24 de febrero de 1999. Consultado el 31 de julio de 2018 .
  6. "Código fuente del servicio de mensajería Java - Versión 1.0.1a" . Sun Microsystems. 29 de octubre de 1998. Archivado del original (ZIP) el 16 de agosto de 2000. Consultado el 31 de julio de 2018 .
  7. "Java Message Service" (PDF) . Sun Microsystems (publicado el 17 de diciembre de 1999). 9 de noviembre de 1999. Archivado (PDF) del original el 23 de agosto de 2000. Consultado el 31 de julio de 2018 .
  8. "Documentación del Servicio de Mensajería de Java" . Sun Microsystems. 23 de diciembre de 1999. Archivado del original el 29 de febrero de 2000. Consultado el 31 de julio de 2018 .
  9. "Servicio de mensajería Java" (PDF) . Sun Microsystems. 27 de agosto de 2001. Archivado (PDF) del original el 9 de octubre de 2022. Consultado el 31 de julio de 2018 .
  10. "Java Message Service" (PDF) . Sun Microsystems. 12 de abril de 2002. Archivado (PDF) del original el 9 de octubre de 2022. Consultado el 31 de julio de 2018 .
  11. "Servicio de mensajería Java" (PDF) . Oracle . 20 de marzo de 2013. Archivado (PDF) del original el 9 de octubre de 2022. Consultado el 31 de julio de 2018 .
  12. "JMS 2.0 Versión final" . Especificación del servicio de mensajería Java . 9 de junio de 2017. Consultado el 31 de julio de 2018 .
  13. "JSR 343: Java Message Service 2.0". The Java Community Process Program. Retrieved July 31, 2018.
  14. "Java Message Service"(PDF). Oracle. March 10, 2015. Archived(PDF) from the original on 2022-10-09. Retrieved July 31, 2018.
  15. "JMS 2.0 errata release (Rev a)". Java Message Service Specification. July 5, 2017. Retrieved July 31, 2018.
  16. "JMS 2.0 Specification". docs.tibco.com. Retrieved 2025-08-29.
  17. Monson-Haefel, Richard (December 6, 2018). "JMS 3.0: Get Involved!". Tomitribe. Retrieved July 17, 2020.
  18. "Jakarta Messaging 3.1 | Jakarta EE | The Eclipse Foundation". Jakarta® EE: The New Home of Cloud Native Java. Retrieved 2025-08-29.
  19. Java Message Service (JMS)
  20. "Apache Qpid™: Open Source AMQP Messaging".
  21. Wallis, Graham. "Choosing a messaging system: WebSphere MQ vs. the WebSphere Application Server Service Integration Bus". IBM developerWorks.
  22. "TIBCO Product Documentation - TIBCO Enterprise Message Service".

Further reading

  • Richards, Mark; Richard Monson-Haefel; David A. Chappell (2009). Java Message Service, Second Edition. O'Reilly. ISBN 978-0-596-52204-9.
  • Official websiteEdita esto en Wikidata
  • JSR 343: Java Message Service 2.0
  • javax.jms API Javadoc documentation
  • Oracle's Java EE 7 JMS tutorial
  • A historical comparison matrix of JMS providers