Quand utiliser Advanced Message Queuing Protocol comme RabbitMQ? [fermé]

45

Quelqu'un peut-il m'expliquer dans quels cas d'utilisation je devrais envisager d'utiliser AMQP, comme par exemple RabbitMQ? Quels sont les avantages et inconvénients?

vbd
la source
Il existe de bonnes réponses à une question similaire sur le dépassement de capacité: utilisation dans le monde réel de files de messages / JMS?
Gan
Vous pouvez voir le lien ci-dessous. Il a une description large: stackoverflow.com/a/51377756/3073945
Md. Sajedul Karim

Réponses:

25

Imaginez que vous disposiez d'un service Web pouvant accepter plusieurs demandes à la seconde. Vous avez également un système de comptabilité qui fait beaucoup de choses, dont le traitement des demandes provenant du service Web.

Si vous mettez une file d'attente entre le service Web et le système de comptabilité, vous pourrez:

  • moins de couplage entre les deux applications, car elles doivent désormais connaître les paramètres de configuration du système de gestion des files d'attente et le nom de la file d'attente. Ici, le problème est que vous êtes généralement plus susceptible de déplacer une application sur un autre serveur que de déplacer le système de gestion des files d'attente.
  • si vous avez beaucoup de demandes qui arrivent dans un court laps de temps, le système de comptabilité sera capable de toutes les traiter de toute façon
  • persistent des demandes si leur nombre devient vraiment énorme

Bien sûr, vous pourriez avoir des situations plus complexes où le nombre de vos applications est beaucoup plus grand que deux et vous devez gérer la communication entre elles.

Виталий Олегович
la source
1
1) Comment A couplé à B est-il meilleur que A couplé à C et C couplé à B?
Charlie
2) Pourquoi ne pas mettre la file d'attente dans le système de comptabilité? Pourquoi introduire une nouvelle pièce mobile qui nécessite une configuration supplémentaire?
Charlie
2
@ Charlie à propos de la question 1, j'ai modifié ma réponse. À propos de la question 2, qu’entendez-vous exactement par la mise en attente dans le système de comptabilité? Vous souhaitez utiliser une structure de données en file d'attente? Dans ce cas, vous aurez plus de code à écrire pour le persister. Vous souhaitez simuler la file d'attente à l'aide d'une table de base de données? Encore une fois, vous devrez écrire du bon code pour gérer cette table. Quelque chose d'autre que je n'ai pas pensé?
Виталий Олегович
Je me suis mal exprimé pour 1. Si la file d'attente est placée dans le service Web ou dans l'application, il reste un couplage. Si, toutefois, la file d'attente est externe aux deux, vous disposez maintenant du double de couplage et de 50% de systèmes en plus pour gérer les points de défaillance. Si une file d'attente tierce est sélectionnée, vous disposerez également de ce nouveau package pour apprendre à configurer et configurer, et vous serez probablement encombré par d'innombrables fonctionnalités que vous n'avez aucun intérêt à utiliser, des fonctionnalités qui ont été ajoutées pour rendre la file d'attente plus utile et plus utile. beaucoup plus de situations que la vôtre.
Charlie
@ Charlie, on suppose qu'un seul courtier de messages serait utilisé entre plusieurs systèmes. Ou il y aurait un seul proxy pour le courtier. (Dans notre cas, nous utilisons un seul appareil de messagerie capable de gérer des millions de messages par seconde pour tous nos systèmes). Cela crée en réalité un plus grand découplage, car un message est généré par un système et tout système intéressé peut recevoir ce message et exécuter la logique appropriée. Le seul couplage concerne la file d'attente elle-même.
Michael Brown
16

En plus de fournir un tampon entre un service Web et un autre service principal, les files de messages peuvent être utilisées pour des scénarios plus avancés. Rabbit MQ (et d'autres produits Message Queue matures également appelés MOM - Message Middleware Middleware) peuvent être configurés pour router et distribuer les messages en fonction de règles différentes.

Par exemple, la technique de routage Pub-Sub permet à une source unique d'envoyer un message et de le faire entendre par de nombreux auditeurs. Ceci est couramment utilisé par les logiciels de trading pour maintenir les utilisateurs au sol à jour.

De plus, étant donné que la plupart des MOM ont des sdks pour plusieurs langues et plates-formes, ils peuvent être utilisés pour intégrer des applications écrites sur différentes plates-formes.

Ce ne sont là que quelques-uns des scénarios activés par les MOM.

Michael Brown
la source