Message broker vs MOM (Message Oriented Middleware)

je suis un peu confus quant à la différence entre un courtier de messages par exemple RabbitMQ et un Middleware orienté Message. Je ne trouve pas beaucoup d'info à part ce Qu'il y a sur Wikipedia. En Cherchant Maman, je trouve des informations sur AMQP qui est un protocole pour maman.. qu'est-ce que cela signifie? MAMAN c'est quoi alors? J'ai aussi lu que RabbitMQ implémente le protocole AMPQ.. alors pourquoi un RabbitMQ devient-il un courtier en messages? Est-ce qu'un agent de messagerie et maman font la même chose?

espérons que certains peuvent démêle ma confusion. merci

19
demandé sur user1577433 2012-11-02 23:58:39

3 réponses

aperçu -

  • protocole - Un ensemble de règles.
  • AMQP - AMQP est un protocole Internet ouvert qui permet d'envoyer et de recevoir des messages de manière fiable.
  • maman (message-oriented-middleware) - est une approche, une architecture pour le système distribué, c'est-à-dire une couche intermédiaire pour l'ensemble du système distribué, où il y a beaucoup de communication interne (un composant interroge des données, et doit ensuite les envoyer au autre composante, qui effectuera un certain traitement des données) de sorte que les composantes doivent partager des informations/données entre elles.
  • Message broker - est un système (dans le MOM) qui gère les messages (envoi et réception), ou pour être plus précis qui achemine les messages au consommateur/destinataire spécifique. Un courtier de messages est généralement construit sur une maman. Le MOM fournit la communication de base entre les applications, et des choses comme la persistance des messages et la garantie de livraison. "Les courtiers de messages sont une composante de base de l'intergiciel axé sur les messages."
  • Rabbitmq - un courtier de messages; une implémentation MOM; une implémentation open-source D'AMQP; selon Wikipedia:

    RabbitMQ est un logiciel libre de messagerie (parfois appelé middleware axé sur les messages) qui met en œuvre les Protocole de mise en file d'attente des messages (AMQP).


Comme vous demandé:

en Cherchant Maman, je trouve des informations sur AMQP qui indique un protocole pour maman.. qu'est-ce que cela signifie?

MOM est d'avoir un middleware de messagerie (couche intermédiaire) entre les composants (distribués) du système, et AMQP est un protocole (ensemble de règles) pour envoyer et recevoir des messages de manière fiable. Ainsi, une implémentation MOM (C'est-à-dire Rabbitmq) peut utiliser AMQP.

QU'est-ce que maman alors?

Message-Oriented Middleware est un approche, une architecture pour le système distribué, c'est-à-dire une couche intermédiaire pour l'ensemble du système distribué, où il y a beaucoup de communication interne (un composant interroge les données, et doit ensuite les envoyer à l'autre composant, qui effectuera un certain traitement des données) donc les composants doivent partager des informations/données entre eux. En bref, c'est une façon de concevoir un système, par exemple: en fonction des exigences globales, nous avons besoin de développer un système distribué, avec une certaine communication interne. Le le plus grand avantage de L'architecture/décision MOM est le découplage des composants, c'est - à-dire que si nous allons changer le composant de requête de données, cela n'aura aucun effet sur les composants de traitement de données, car ils communiquent via MOM (par exemple le Cluster Rabbitmq) - le composant de traitement de données reçoit les données sous forme de messages, qui les analyse et les traite ensuite.

MOM à la fin est juste une décision de conception, que nous utilisons un middleware pour coller nos composants système (distribués), un middleware pour gérer la communication entre eux, sous forme de messages (i.e. JSON). Pour mettre en œuvre un middleware axé sur les messages, nous avons besoin de plus de règles spécifiques, c'est-à-dire comment les messages seront publiés, consommés, comment l'accusé de réception fonctionnera, la durée de vie d'un message est jusqu'à ce qu'il soit consommé, la persistance d'un message, etc. AMQP est essentiellement cet ensemble de règles, c'est-à-dire une norme/un protocole pour la mise en œuvre D'une maman, c'est-à-dire un système de messagerie utilisant AMQP, signifie qu'il se limite par le règles établies. De Wikipedia:

AMQP mandate le comportement du fournisseur de messagerie et du client mesure dans laquelle les mises en œuvre provenant de différents fournisseurs sont interopérables, de la même manière que SMTP, HTTP, FTP, etc. ont créé inter-opérable système.

J'ai aussi lu que RabbitMQ implémente le protocole AMPQ.. alors pourquoi un RabbitMQ devient-il un courtier de messages?

Oui, Rabbitmq est un courtier de messages (editeur -> exchange -> file -> consommateur). C'est une implémentation AMQP open source, c'est - à-dire un système/courtier de messagerie qui se limite à AMQP (les règles AMQP) - on peut utiliser Rabbitmq comme middleware, donc MOM.

AMQP - est simplement un ensemble de règles que j'ai.e .comment les messages seront publiés, conservés (dans les files d'attente), consommés, accusés de réception, etc.

Est-ce qu'un courtier en messages et maman sont la même chose?

en termes simples, Oui. Si on doit y aller avec maman conception pour notre système distribué, nous pouvons simplement utiliser Rabbitmq (un courtier de messages; une implémentation AMQP) comme middleware.

12
répondu Nabeel Ahmed 2016-08-15 14:07:05

" MOM "s'entend au sens large de toute technologie pouvant transmettre des" messages " d'une application d'espace utilisateur à une autre. Un message est généralement considéré comme une information discrète, par rapport à un flux.

les produits MOM étaient assez grands et complexes: CORBA, JMS, TIBCO, WebsphereMQ, etc. et a essayé de faire beaucoup plus que simplement livrer des messages.

un courtier est un ensemble particulier de modèles de routage et de file d'attente, et nous utilisons habituellement le terme "courtier"" spécifiquement dans MOM (par rapport à HTTP, email, XMPP, etc.) Routage signifie qu'un message est transmis à un pair, à l'un des nombreux pairs, à tous les pairs, etc. Files d'attente de messages sont conservées en mémoire ou sur disque jusqu'à ce qu'ils puissent être livrés (et, dans certains cas, l'accusé de réception).

AMQP utilisé pour spécifier ces broker patters, de sorte qu'une application pourrait compter sur un comportement cohérent de n'importe quel broker compatible AMQP (ainsi RabbitMQ et OpenAMQ ressemblaient à peu près la même chose à une application client, comme deux HTTP ou deux Les serveurs XMPP seraient les mêmes). AMQP / 1.0 spécifie juste la connexion entre les noeuds, donc vous n'avez pas de garanties de comportement. Cela rend AMQP/1.0 beaucoup plus facile à mettre en œuvre pour les entreprises, mais n'assure pas l'interopérabilité.

ZeroMQ est un middleware orienté message qui définit, comme AMQP / 1.0, les connexions entre pièces plutôt que le comportement d'un courtier central. Cependant, il est relativement facile d'écrire des courtiers maman en utilisant 0MQ, et nous avons fait quelques-uns de ces (comme Majordomo).

11
répondu Pieter Hintjens 2012-11-04 10:59:33

les courtiers en messages sont une sorte de maman (assez populaire). Une autre sorte de mère serait mère sans courtier, comme ZeroMQ. Avec maman basée sur courtier, tous les messages vont à un endroit central: courtier, et obtenir distribué de là. Broker less MOM permet généralement la messagerie de pair à pair (mais n'exclut pas l'option du serveur central aussi bien) .

AMQP est une définition de protocole MOM basée sur un courtier (au moins toutes les versions antérieures à 1.0, qui dérivent vers plus de General MOM), et il y a plusieurs différents courtiers de messages mettant en œuvre ce protocole, RabbitMQ n'en est qu'un.

6
répondu Davorin Ruševljan 2012-11-04 09:52:04