Interfaz de programación de aplicaciones Java
La API de mensajería de Jakarta (anteriormente Java Message Service o API 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 se pueden utilizar para facilitar el envío y la recepción de mensajes entre sistemas de software . [1] Jakarta Messaging es parte de Jakarta EE y se definió originalmente mediante 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 acoplada de forma flexible , donde en este contexto el término "comunicación" puede entenderse como un intercambio de mensajes entre componentes de software. Las tecnologías orientadas a mensajes intentan relajar la comunicación acoplada de forma estrecha (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í de forma indirecta. Los beneficios de esto incluyen que los remitentes de mensajes no necesitan tener un conocimiento preciso de 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 al cambio. [3]
Historial de versiones
- JMS 1.0 [4]
- JMS 1.0.1 (5 de octubre de 1998) [4]
- JMS 1.0.1a (30 de octubre de 1998) [5] [6]
- JMS 1.0.2 (17 de diciembre de 1999) [7]
- JMS 1.0.2a (23 de diciembre de 1999) [8]
- JMS 1.0.2b (27 de agosto de 2001) [9]
- JMS 1.1 (12 de abril de 2002) [10]
- JMS 2.0 (21 de mayo de 2013) [11] [12]
- JMS 2.0a (16 de marzo de 2015) [13] [14]
Actualmente, JMS 2.0 se mantiene bajo el Proceso de la Comunidad Java como JSR 343. [15]
JMS 3.0 se encuentra en fase de desarrollo inicial como parte de Jakarta EE. [16]
Elementos
Los siguientes son elementos JMS: [17]
- Proveedor de JMS
- Una implementación de la interfaz JMS para middleware orientado a mensajes (MOM). Los proveedores se implementan como una implementación JMS de Java o como un adaptador a un MOM que no sea 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 preparación que contiene mensajes que se han enviado y están esperando ser leídos (por un solo consumidor). Como sugiere el nombre de la cola, los mensajes se entregan en el orden en que se envían. 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 envían a múltiples suscriptores.
Modelos
La API de JMS admite dos modelos distintos:
- 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 mensajes de las colas establecidas para almacenar sus mensajes. 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 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 de mensajes en particular. Los suscriptores pueden manifestar su interés en recibir mensajes publicados sobre un tema de mensajes en particular. En este modelo, ni el editor ni el suscriptor se conocen entre sí. Una buena analogía para esto es un tablón de anuncios anónimo.
- Cero o más consumidores recibirán el mensaje.
- Existe una dependencia temporal entre los publicadores y los suscriptores. El publicador debe crear un tema de mensaje 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 proporciona una forma de separar la aplicación de la capa de transporte para proporcionar datos. Las mismas clases Java se pueden utilizar para comunicarse con diferentes proveedores JMS mediante la información de la Interfaz de nombres y directorios de Java (JNDI) para el proveedor deseado. Las clases primero utilizan una fábrica de conexiones para conectarse a la cola o al 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
RFC 6167 define un jms:
esquema URI para el Servicio de mensajes Java.
Implementaciones de proveedores
Para utilizar 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 entrada de mensajes de la arquitectura del conector Java EE , que se puso a disposición por primera vez en esa versión.
La siguiente es una lista de proveedores JMS comunes:
Véase también
Referencias
- ^ Curry, Edward. 2004. "Middleware orientado a mensajes". En Middleware for Communications, ed. Qusay H Mahmoud, 1-28. Chichester, Inglaterra: John Wiley and Sons. doi :10.1002/0470862084.ch1. ISBN 978-0-470-86206-3
- ^ "JSR 914: API de Java Message Service (JMS)". El programa de proceso de la comunidad Java . Consultado el 31 de julio de 2018 .
- ^ Richards y otros, páginas 3 a 5.
- ^ ab «Java Message Service» (PDF) . Sun Microsystems . 5 de octubre de 1998. Archivado (PDF) desde el original el 24 de febrero de 1999. Consultado el 31 de julio de 2018 .
- ^ "Documentación del servicio de mensajes de Java". Sun Microsystems. 30 de octubre de 1998. Archivado desde el original el 24 de febrero de 1999. Consultado el 31 de julio de 2018 .
- ^ "Java Message Service Source - Version 1.0.1a". Sun Microsystems. 29 de octubre de 1998. Archivado desde el original (ZIP) el 16 de agosto de 2000. Consultado el 31 de julio de 2018 .
- ^ "Java Message Service" (PDF) . Sun Microsystems (publicado el 17 de diciembre de 1999). 9 de noviembre de 1999. Archivado (PDF) desde el original el 23 de agosto de 2000. Consultado el 31 de julio de 2018 .
- ^ "Documentación del servicio de mensajes de Java". Sun Microsystems. 23 de diciembre de 1999. Archivado desde el original el 29 de febrero de 2000. Consultado el 31 de julio de 2018 .
- ^ "Java Message Service" (PDF) . Sun Microsystems. 27 de agosto de 2001. Archivado (PDF) desde el original el 9 de octubre de 2022 . Consultado el 31 de julio de 2018 .
- ^ "Java Message Service" (PDF) . Sun Microsystems. 12 de abril de 2002. Archivado (PDF) desde el original el 9 de octubre de 2022 . Consultado el 31 de julio de 2018 .
- ^ "Java Message Service" (PDF) . Oracle . 20 de marzo de 2013. Archivado (PDF) desde el original el 2022-10-09 . Consultado el 31 de julio de 2018 .
- ^ "Versión final de JMS 2.0". Especificación del servicio de mensajes de Java . 9 de junio de 2017 . Consultado el 31 de julio de 2018 .
- ^ "Java Message Service" (PDF) . Oracle. 10 de marzo de 2015. Archivado (PDF) desde el original el 9 de octubre de 2022 . Consultado el 31 de julio de 2018 .
- ^ "Versión de erratas de JMS 2.0 (Rev a)". Especificación del servicio de mensajes de Java . 5 de julio de 2017 . Consultado el 31 de julio de 2018 .
- ^ "JSR 343: Java Message Service 2.0". Programa de proceso de la comunidad Java . Consultado el 31 de julio de 2018 .
- ^ Monson-Haefel, Richard (6 de diciembre de 2018). "JMS 3.0: ¡Participe!". Tomitribe . Consultado el 17 de julio de 2020 .
- ^ Servicio de mensajes Java (JMS)
- ^ "Apache Qpid™: mensajería AMQP de código abierto".
- ^ Wallis, Graham. "Elección de un sistema de mensajería: WebSphere MQ frente al bus de integración de servicios de WebSphere Application Server". IBM developerWorks .
- ^ "Software de mensajería TIBCO Cloud™ de TIBCO".
- ^ "Servicio de mensajes empresariales TIBCO™".
Lectura adicional
- Richards, Mark; Richard Monson-Haefel; David A. Chappell (2009). Servicio de mensajes Java, segunda edición . O'Reilly. ISBN 978-0-596-52204-9.
Enlaces externos
El Wikilibro Programación Java EE tiene una página sobre el tema: Servicio de mensajes Java
- Sitio web oficial
- JSR 343: Servicio de mensajes Java 2.0
javax.jms
Documentación de API Javadoc- Tutorial de JMS para Java EE 7 de Oracle
- Matriz de comparación histórica de proveedores de JMS