J'essaie de comprendre ce que JMS et comment il est connecté à la terminologie AMQP. Je sais que JMS est une API et AMQP est un protocole.
Voici mes hypothèses (et mes questions également)
- RabbitMQ utilise le protocole AMQP (implémente plutôt le protocole AMQP)
- Les clients Java doivent utiliser les bibliothèques clientes du protocole AMQP pour se connecter / utiliser RabbitMQ
- Où l'API JMS entre en jeu ici? L'API JMS doit utiliser les bibliothèques clientes AMQP pour se connecter à RabbitMQ?
- Habituellement, nous utilisons JMS pour connecter des courtiers de messages comme RabbitMQ, ActiveMQ, etc. Alors, quel est le protocole par défaut utilisé ici au lieu d'AMQP?
Certains des éléments ci-dessus peuvent être stupides. :-) Mais en essayant d'enrouler ma tête autour de ça.
Réponses:
Votre question est un peu compliquée et ressemble à une question difficile dans un papier de questions :) (Comme les enseignants essaient toujours de poser des questions simples et complexes: J'espère que vous n'êtes pas un enseignant :)) Voyons tout cela un par un.
Comme vous le savez:
L'API Java Message Service (JMS) est une API Java Message Oriented Middleware (MOM) pour l'envoi de messages entre deux clients ou plus . JMS fait partie de Java Platform, Enterprise Edition et est défini par une spécification développée dans le cadre du Java Community Process sous le nom de JSR 914. Il s'agit d'une norme de messagerie qui permet aux composants d'application basés sur Java Enterprise Edition (Java EE) de créer, envoyer, recevoir et lire des messages. Il permet à la communication entre différents composants d'une application distribuée d'être faiblement couplée, fiable et asynchrone .
Maintenant (de Wikipedia ):
Et le plus important (encore une fois sur Wikipédia):
Certaines choses importantes que vous devez savoir:
Bonne chance :)
la source
I am not sure but I believe that AMQP also uses HTTP/S protocol but AMQP is enhacement is messaging protocol over HTTP
: Non, ce n'est pas correct.JMS uses simple HTTP but for RabbitMQ/ActiveMq, they uses enhanced protocol.
: Non, ce n'est pas correct. JMS n'est qu'une spécification d'API. Il n'utilise aucun protocole. Un fournisseur JMS (comme ActiveMQ) peut utiliser n'importe quel protocole sous-jacent pour réaliser l'API JMS. Par exemple: Apache ActiveMQ peut utiliser l'un des protocoles suivants: AMQP, MQTT, OpenWire, REST (HTTP), RSS et Atom, Stomp, WSIF, WS Notification, XMPP.Commençons par la base.
RabbitMQ est un MOM (Message Oriented Middleware), développé avec Erlang (un langage de programmation orienté TLC) et implémentant le protocole filaire AMQP (Advance Message Queuing Protocol). Actuellement, de nombreuses API client (par exemple, Java, C ++, RESTful, etc.) sont disponibles pour permettre l'utilisation des services de messagerie RabbitMQ.
JMS (Java Messaging Service) est une norme JCP définissant un ensemble d'API structurées à implémenter par un MOM. Un exemple de MOM qui implémente (c'est-à-dire est compatible avec) les API JMS est ActiveMQ; il y a aussi HornetMQ et d'autres. Ces middlewares obtiennent les API JMS et implémentent les modèles d'échange en conséquence.
Selon ci-dessus, en prenant le squelette des API JMS, une instance de RabbitMQ et de ses API client Java, il est possible de développer une implémentation JMS en utilisant RabbitMQ: la seule chose que l'on ait à faire, à ce stade, est d'implémenter le modèle d'échange (sur RabbitMQ) selon la spécification JMS.
La clé est la suivante: un ensemble d'API, comme JMS, peut être implémenté quelle que soit la technologie (dans ce cas, RabbitMQ).
la source
JMS, lorsqu'il a été défini, ne définissait pas de protocole entre le client JMS et un serveur de messagerie. Le client JMS, qui implémente l'API JMS, peut utiliser n'importe quel protocole pour communiquer avec le serveur de messagerie. Le client doit juste être compatible avec l'API JMS. C'est tout. Les clients JMS utilisent généralement un protocole personnalisé que leur serveur de messagerie comprend.
AMQP, quant à lui, est un protocole entre un client de messagerie et un serveur de messagerie. Un client JMS peut utiliser AMQP comme protocole pour communiquer avec le serveur de messagerie. Et il y a des clients comme ça disponibles.
http://www.lshift.net/blog/2009/03/16/openamqs-jms-client-with-rabbitmq-server
la source
JMS est une API, donc certaines API JMS sont implémentées via le protocole AMQP (comme Apache QPID JMS ) alors que la plupart des API JMS utilisent d'autres protocoles. Si la version du protocole AMQP est la même, un tel client doit être en mesure de communiquer avec un autre client AMQP.
Cela dépend de votre configuration de cette API JMS. Pour ActiveMQ, cela pourrait être AMQP mais par défaut c'est 'openwire'
la source
Je veux suggérer un article, cela m'a beaucoup aidé à mieux comprendre quelle est la différence entre AMQP et JMS.
Voici le lien vers l'article: http://www.wmrichards.com/amqp.pdf
la source
https://spring.io/understanding/AMQP
la source
Je soupçonne que vous cherchez peut-être cette documentation qui dit, en partie:
la source