152 votes

JMS et AMQP - RabbitMQ

Je suis en train d'essayer de comprendre ce que JMS et comment il est relié à AMQP de la terminologie. Je sais JMS est une API et AMQP est un protocole.

Voici mes hypothèses (et des questions)

  • RabbitMQ utilise le protocole AMQP (plutôt implémente le protocole AMQP)
  • Java, les clients doivent utiliser AMQP protocole bibliothèques client pour se connecter / utiliser RabbitMQ
  • D'où vient JMS API entrent en jeu ici? JMS API doit utiliser AMQP bibliothèques client pour se connecter à RabbitMQ?
  • Habituellement, nous utilisons JMS pour se connecter Message courtiers comme RabbitMQ, ActiveMQ, etc. Alors quel est le protocole par défaut utilisé ici à la place de AMQP?

Certains de ce qui précède peut être muet. :-) Mais d'essayer d'envelopper ma tête autour de lui.

128voto

freak Points 3327

Votre question est un peu brouillon et difficile Question d'un papier :)(Comme les enseignants toujours essayer de poser des questions simples, rendant complexes :D j'espère que vous n'êtes pas un enseignant :) )Je vois tous ces points un par un.
Comme vous le savez
La Java Message Service (JMS) API Java Message Oriented Middleware (MOM) de l'API pour l'envoi de messages entre deux ou plusieurs clients. JMS est une partie de la Plate-forme Java Enterprise Edition, et est défini par un cahier des charges élaboré en vertu de la Communauté Java Processus JSR 914. C'est un standard de messagerie qui permet aux composants de l'application basée sur Java Enterprise Edition (Java EE) pour créer, envoyer, recevoir et lire des messages. Il permet la communication entre les différents composants d'une application distribuée à être faiblement couplé, fiable, et asynchrones(à Partir de WIKI).
Maintenant
L'Advanced Message Queuing Protocol (AMQP) is an open standard application layer protocol for message-oriented middleware. The defining features of AMQP are message orientation, queuing, routing (including point-to-point and publish-and-subscribe), reliability and security
Et la chose la plus importante
Unlike JMS, which merely defines an API, AMQP is a wire-level protocol. A wire-level protocol is a description of the format of the data that is sent across the network as a stream of octets. Consequently any tool that can create and interpret messages that conform to this data format can interoperate with any other compliant tool irrespective of implementation language(À partir de WIKI).

Certains imp choses que vous devez savoir
1: Gardez à l'esprit que AMQP est une des technologies de Messagerie qui ne mettent pas en œuvre la JMS API.
2: JMS est de l'API et AMQP est un protocole.Donc ça n'a pas de sens de dire que ce qui est le protocole par défaut de JMS , bien sûr, les applications client de l'utilisation de HTTP/S, ainsi que le protocole de connexion lors de l'invocation de WebLogic Service Web.
3: JMS n'est qu'une API spec. Il ne marche pas utiliser n'importe quel protocole. Un fournisseur JMS (comme ActiveMQ) pourrait utiliser n'importe quel protocole sous-jacent pour réaliser les JMS API. Ex: Apache ActiveMQ pouvez utiliser l'un des protocoles suivants: AMQP, MQTT, OpenWire, le REPOS(HTTP), les flux RSS et Atom, Stomp, WSIF, WS Notification, XMPP
Je vous propose de voir en Utilisant JMS de Transport que le Protocole de Connexion Et de voir aussi ce très bon PDF.
GoodLuck :)

49voto

Paolo Maresca Points 121

Commençons par la base.

RabbitMQ est un MOM (Message Oriented Middleware), développé avec Erlang (TLC-langage de programmation orienté) et la mise en œuvre de la fil de protocole AMQP (Advanced Message Queuing Protocol). Actuellement, de nombreuses Api Client (par exemple, Java, C++, Repos, etc.) sont disponibles pour permettre l'utilisation de RabbitMQ, les services de messagerie.

JMS (Java Messaging Service) est un PLAN standard définissant un ensemble structuré d'Api à être mis en œuvre par une MAMAN. Un exemple de MAMAN qui met en œuvre (c'est à dire compatible avec les JMS Api ActiveMQ, il y a aussi HornetMQ, et d'autres. Ces middlewares obtenir le JMS Api et de mettre en œuvre l'échange de modèles en conséquence.

D'après ci-dessus, pris le squelette de JMS Api, une instance de RabbitMQ et son Client Java Api, il est possible de développer un JMS mise en œuvre utilisation de RabbitMQ: la seule chose que l'on a à faire, à ce stade, la mise en œuvre du modèle d'échange (plus de RabbitMQ) selon la spécification JMS.

La clé est: un ensemble d'Api, comme JMS, peuvent être mises en œuvre ne dépend pas de la technologie (dans ce cas, RabbitMQ).

16voto

chitakasa Points 123

JMS, où elle a été définie, non pas de définir un protocole entre le client JMS et un serveur de messagerie. Le client JMS, qui mettent en œuvre les JMS API pouvez utiliser n'importe quel protocole pour communiquer avec le serveur de messagerie. Le client a juste besoin d'être en conformité avec JMS api. C'est tout. Ususally JMS les clients utilisent un protocole personnalisé que leur serveur de messagerie comprend.

AMQP sur l'autre main est un protocole entre un client de messagerie et le serveur de messagerie. Un client JMS pouvez utiliser AMQP que le protocole pour communiquer avec le serveur de messagerie. Et il y a des clients tels que disponibles.

http://www.lshift.net/blog/2009/03/16/openamqs-jms-client-with-rabbitmq-server

-1voto

Danger Points 415

Je soupçonne que vous cherchez peut-être pour cette documentation , qui dit, en partie:

Client JMS pour vFabric RabbitMQ est une bibliothèque cliente pour vFabric RabbitMQ. vFabric RabbitMQ est pas un fournisseur JMS, mais dispose de fonctionnalités nécessaires à l'appui de la File d'attente JMS et le Sujet de messagerie modèles. Client JMS pour RabbitMQ implémente l'JMS 1.1 spécification sur le dessus de la RabbitMQ client Java API, permettant ainsi aux nouvelles et existantes JMS applications de se connecter avec RabbitMQ courtiers Advanced Message La mise en attente du Protocole AMQP ().

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X