Estoy tratando de entender qué JMS y cómo está conectado a la terminología AMQP. Sé que JMS es una API y AMQP es un protocolo.
Aquí están mis suposiciones (y preguntas también)
- RabbitMQ usa el protocolo AMQP (más bien implementa el protocolo AMQP)
- Los clientes Java necesitan usar bibliotecas de cliente de protocolo AMQP para conectarse / usar RabbitMQ
- ¿Dónde entra en juego la API JMS aquí? ¿La API JMS debe usar las bibliotecas de cliente AMQP para conectarse a RabbitMQ?
- Usualmente usamos JMS para conectar corredores de mensajes como RabbitMQ, ActiveMQ, etc. Entonces, ¿cuál es el protocolo predeterminado utilizado aquí en lugar de AMQP?
Algunos de los anteriores pueden ser tontos. :-) Pero tratando de entenderlo.
Respuestas:
Su pregunta es un poco desordenada y se asemeja a una pregunta difícil en un documento de preguntas :) (Como los maestros siempre tratan de hacer preguntas simples que hacen complejas: DI espero que no sea un maestro :)) Veamos todas estas preguntas una por una.
Como sabes:
La API de Java Message Service (JMS) es una API de middleware orientado a mensajes de Java (MOM) para enviar mensajes entre dos o más clientes . JMS es parte de Java Platform, Enterprise Edition, y se define mediante una especificación desarrollada bajo el Proceso de la Comunidad Java como JSR 914. Es un estándar de mensajería que permite crear componentes de aplicaciones basados en Java Enterprise Edition (Java EE), enviar, recibir y leer mensajes. Permite que la comunicación entre diferentes componentes de una aplicación distribuida se acople libremente, sea confiable y asíncrona .
Ahora (de Wikipedia ):
Y lo más importante (nuevamente de Wikipedia):
Algunas cosas importantes que debes saber:
Buena suerte :)
fuente
I am not sure but I believe that AMQP also uses HTTP/S protocol but AMQP is enhacement is messaging protocol over HTTP
: No. Eso no es correcto.JMS uses simple HTTP but for RabbitMQ/ActiveMq, they uses enhanced protocol.
: No. Eso no es correcto. JMS es solo una especificación de API. No utiliza ningún protocolo. Un proveedor de JMS (como ActiveMQ) podría estar utilizando cualquier protocolo subyacente para realizar la API de JMS. Por ejemplo: Apache ActiveMQ puede usar cualquiera de los siguientes protocolos: AMQP, MQTT, OpenWire, REST (HTTP), RSS y Atom, Stomp, WSIF, WS Notification, XMPP.Comencemos desde la base.
RabbitMQ es un MOM (Middleware orientado a mensajes), desarrollado con Erlang (un lenguaje de programación orientado a TLC) e implementando el protocolo de cable AMQP (Protocolo avanzado de colas de mensajes). Actualmente, muchas API de cliente (por ejemplo, Java, C ++, RESTful, etc.) están disponibles para permitir el uso de los servicios de mensajería RabbitMQ.
JMS (Java Messaging Service) es un estándar JCP que define un conjunto de API estructuradas para ser implementadas por un MOM. Un ejemplo de MOM que implementa (es decir, es compatible con) las API de JMS es ActiveMQ; También hay HornetMQ y otros. Tales middlewares obtienen las API de JMS e implementan los patrones de intercambio en consecuencia.
Según lo anterior, tomado el esqueleto de las API de JMS, una instancia de RabbitMQ y sus API de cliente Java, es posible desarrollar una implementación de JMS utilizando RabbitMQ: lo único que hay que hacer, en ese punto, es implementar la patrón de intercambio (sobre RabbitMQ) de acuerdo con la especificación JMS.
La clave es: un conjunto de API, como JMS, se puede implementar sin importar la tecnología (en este caso, RabbitMQ).
fuente
JMS, cuando se definió, no definió un protocolo entre el cliente JMS y un servidor de mensajería. El cliente JMS, que implementa la API JMS, puede usar cualquier protocolo para comunicarse con el servidor de mensajería. El cliente solo necesita cumplir con la API de JMS. Eso es todo. Usualmente, los clientes JMS usan un protocolo personalizado que su servidor de mensajería comprende.
AMQP, por otro lado, es un protocolo entre un cliente de mensajería y un servidor de mensajería. Un cliente JMS puede usar AMQP como protocolo para comunicarse con el servidor de mensajería. Y hay clientes como ese disponibles.
http://www.lshift.net/blog/2009/03/16/openamqs-jms-client-with-rabbitmq-server
fuente
JMS es una API, por lo que algunas API de JMS se implementan a través del protocolo AMQP (como Apache QPID JMS ), mientras que la mayoría de las API de JMS usan otros protocolos. Si la versión del protocolo AMQP es la misma, dicho cliente debería poder comunicarse con otro cliente AMQP.
Depende de su configuración de esa API JMS. Para ActiveMQ, podría ser AMQP pero por defecto es 'openwire'
fuente
Quiero sugerir un artículo, me ayudó mucho a comprender mejor cuál es la diferencia entre AMQP y JMS.
Aquí está el enlace al documento: http://www.wmrichards.com/amqp.pdf
fuente
https://spring.io/understanding/AMQP
fuente
Sospecho que puede estar buscando esta documentación que dice, en parte:
fuente