web-dev-qa-db-fra.com

Pourquoi avons-nous besoin d'utiliser rabbitmq

Pourquoi avons-nous besoin de RabbitMQ alors que nous avons un framework réseau plus puissant en Python appelé Twisted. J'essaie de comprendre la raison pour laquelle quelqu'un voudrait utiliser RabbitMQ.

Pourriez-vous s'il vous plaît fournir un scénario ou un exemple utilisant RabbitMQ?

Aussi, où puis-je trouver un tutoriel sur la façon d'utiliser RabbitMQ?

54
fear_matrix

Permettez-moi de vous expliquer quelques raisons qui font que l'utilisation de MOM (Message Oriented Middleware) est probablement le meilleur choix.

Découplage:

Il peut découpler/séparer les composants principaux de l'application. Il n'est pas nécessaire d'apporter ici tous les avantages de l'architecture découplée. Je veux juste souligner que c'est l'une des principales exigences de l'écriture d'un logiciel de qualité et maintenable.

La flexibilité:

Il est en fait très facile de connecter deux applications totalement différentes écrites dans différentes langues en utilisant le protocole AMQP. Ces applications se parleront à l'aide d'un "traducteur" qui est MOM.

Évolutivité:

En utilisant MOM, nous pouvons mettre le système à l'échelle horizontalement. Un producteur de messages peut transmettre à un nombre illimité de consommateurs de messages une tâche, une commande ou un message pour le traitement et la mise à l'échelle de ce système, il suffit de créer de nouveaux consommateurs de messages. Disons que nous obtenons 1000 images par seconde et que nous devons les redimensionner. Résoudre ce problème avec des méthodes traditionnelles pourrait être un casse-tête. Avec MOM, nous pouvons transmettre des images aux consommateurs de messages qui peuvent faire leur travail de manière asynchrone et s'assurer que l'intégrité des données est intacte.

Ce sont d'autres avantages de l'utilisation de MOM, mais ces 3 sont les plus importants à mon avis.

30
hserge

Twisted n'est pas une implémentation de file d'attente. En plus de cela, RabbitMQ offre des fonctionnalités de mise en file d'attente au niveau de l'entreprise et implémente le protocole AMQP qui est souvent nécessaire dans un monde d'entreprise.

13
Andreas Jung

Twisted est une bibliothèque de mise en réseau qui implémente un certain nombre de protocoles réseau et vous permet de créer les vôtres. Un des protocoles que vous pouvez utiliser avec Twisted est AMQP https://launchpad.net/txamqp

RabbitMQ est un courtier AMQP, c'est-à-dire un service qui s'exécute en dehors de votre application, probablement sur un cluster de serveurs séparé. AMQP est simplement le protocole utilisé pour communiquer avec un courtier de mise en file d'attente de messages comme RabbitMQ. Vous obtenez beaucoup de choses de RabbitMQ. Vous pouvez envoyer des messages de manière persistante avec une livraison garantie afin qu'ils arrivent même si votre application se bloque, et même si le courtier RabbitMQ finit par être redémarré. Vous obtenez l'équilibrage de charge entre les consommateurs de messages si vous avez plusieurs consommateurs dans la même file d'attente. Vous obtenez l'interopérabilité avec des applications dans d'autres langues tant que vous utilisez un format de sérialisation raisonnablement ouvert pour vos corps de message. AMQP vous permet de diviser une application monolithique en plusieurs parties à couplage lâche qui peuvent s'exécuter sur différents serveurs. C'est une grande victoire pour la maintenance à long terme d'une application.

10
Michael Dillon

rabbitmq est un peu plus qu'une simple messagerie ... c'est une plateforme commune qui a la capacité d'interconnecter des applications. En utilisant rabbitmq a Java peut parler à un serveur linux et/ou une application .net, à un Ruby & Rails = + presque tout ce qui trouve sa place dans le développement web d'entreprise. Et surtout, il implémente le modèle "fire and oublie" proposé par AMQP. C'est juste un remplacement parfait pour JMS ou ESB..surtout si vous avez affaire à une architecture multiplateforme , avec une garantie de fiabilité. Il existe même une fonctionnalité spéciale appelée RPC (Remote procedure call) qui ajoute à la facilité de développement de l'Arch distribué.

En dehors de tout cela, dans le monde des services financiers comme la bourse ou le marché des actions où un grand nombre de routages fiables et efficaces sont requis (supposons que vous ne connaissiez pas le nombre réel de personnes souscrites à vos services mais que vous vouliez vous assurer que quiconque le fasse ainsi, reçoit vos pings s'ils sont connectés en ce moment, ou se connecteront plus tard), rabbitmq règne car il est basé sur ERLANG et la plate-forme Open-telecom qui assure des performances élevées tout en utilisant un minimum de ressources. Pour l'introduction la plus pratique à rabbitmq, consultez rabbitmq.com/getstarted.html pour votre langage de développement natif.

5
Anshuman Banerjee

RabbitMQ est une implémentation de AMQP , qui définit un protocole interopérable pour le middleware orienté message. À ce titre, il définit la sémantique pour la création, la publication, le routage et la consommation de messages qui peut être implémentée sur n'importe quelle plateforme.

Conceptuellement, il pourrait être considéré comme une spécialisation d'un moteur de mise en réseau comme Twisted, mais basé sur une norme acceptée par l'industrie.

Voici un blog de Ross Mason qui discute de l'intérêt de la publication-abonnement interopérable avec AMQP: http://blogs.mulesoft.org/inter-operable-publishsubscribe-with-amqp/

4
David Dossot

J'utilise RabbitMQ comme courtier de messages pour Celery .

De plus, j'ai travaillé avec Twisted. C'est différent.

Cliquez ici pour en savoir plus sur [~ # ~] amqp [~ # ~] : http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol

2
Mohammad Efazati