web-dev-qa-db-fra.com

Qu'est-ce qu'un MQ et pourquoi est-ce que je veux l'utiliser?

Dans mon équipe au travail, nous utilisons beaucoup la technologie IBM MQ pour la communication inter-applications. J'ai récemment vu sur Hacker News et d'autres endroits d'autres technologies MQ telles que RabbitMQ . J'ai une compréhension de base de ce que c'est (une zone communément vérifiée pour mettre et recevoir des messages), mais ce que je veux savoir en quoi c'est exactement bon Comment saurai-je où je veux l'utiliser et quand? Pourquoi ne pas simplement s'en tenir à des formes plus rudimentaires de messagerie interprocessus?

32
daveslab

Jusqu'à présent, toutes les explications sont précises et pertinentes, mais il manque peut-être quelque chose: l'un des principaux avantages de la mise en file d'attente des messages: la résilience.

Imaginez ceci: vous devez communiquer avec deux ou trois autres systèmes. Les services Web constituent une approche courante ces jours-ci, ce qui est bien si vous avez besoin de réponses immédiates.

Cependant, les services Web peuvent être hors service et non disponibles - que faites-vous alors? Le fait de placer votre message dans une file d'attente (qui a également un composant sur votre machine/serveur) fonctionnera généralement dans ce scénario - votre message n'est tout simplement pas remis et donc traité pour le moment - mais il le sera plus tard, lorsque l'autre côté service revient en ligne.

Ainsi, dans de nombreux cas, l’utilisation de files de messages pour connecter des systèmes disparates constitue un moyen plus fiable et plus robuste d’envoyer des messages. Cela ne fonctionne pas bien pour tout (si vous voulez connaître le prix de l'action actuel pour MSFT, placer cette demande dans une file d'attente n'est peut-être pas la meilleure des idées) - mais dans de nombreux cas, comme passer une commande. Dans la file de messages de votre fournisseur, cela fonctionne vraiment bien et peut aider à résoudre certains problèmes de fiabilité avec d'autres technologies.

54
marc_s

MQ est synonyme de file d'attente de messagerie.

C'est une couche d'abstraction qui permet à plusieurs processus (probablement sur différentes machines) de communiquer via différents modèles (par exemple, point à point, publication abonnement, etc.). Selon l'implémentation, il peut être configuré pour des éléments tels que la fiabilité garantie, le rapport d'erreurs, la sécurité, la découverte, les performances, etc. 

Vous pouvez faire tout cela manuellement avec des sockets, mais c'est très difficile.

Par exemple: supposons que vous souhaitiez que les processus communiquent, mais que l’un d’eux puisse mourir au milieu et être reconnecté plus tard. Comment feriez-vous pour que les messages provisoires ne soient pas perdus? Les solutions MQ peuvent le faire pour vous.

13
Uri

Les systèmes de file d'attente de messages sont censés vous donner plusieurs bonus. La surveillance et le comportement transactionnel sont parmi les plus importants.

La conception transactionnelle est importante si vous souhaitez être immunisé contre les défaillances, telles que les pannes de courant. Imaginez que vous souhaitiez notifier un retrait bancaire à un système bancaire, et que cette opération doit être effectuée exactement une fois par demande, quels que soient les serveurs en panne temporairement au milieu. Les systèmes MQ vous permettraient de coordonner les transactions entre plusieurs systèmes de bases de données, MQ et autres.

Il va sans dire que ces systèmes sont très lents par rapport aux canaux nommés, TCP ou à d'autres outils non transactionnels. Si des performances élevées sont requises, vous ne permettrez pas que vos messages soient écrits sur le disque. Au lieu de cela, cela compliquera votre conception - pour réaliser une communication exotique fiable ET rapide, qui pousse le concepteur dans des astuces vraiment non triviales.

Les systèmes MQ permettent normalement aux utilisateurs de regarder le contenu de la file d'attente, d'écrire des plugins, d'effacer queus, etc.

7

MQ signifie simplement Message Queue.

Vous en utiliserez un lorsque vous devrez envoyer de manière fiable un message inter-processus/multiplate-forme/multi-application qui ne dépend pas du temps.

La file d'attente de messages reçoit le message, le place dans la file d'attente appropriée et attend que l'application récupère le message lorsqu'elle est prête.

2
Justin Niessner

référence: les services Web peuvent être hors service et non disponibles - que faites-vous alors? Comme une extension à cela; Et si votre réseau local et votre PC local sont également en panne ?? Pendant que vous attendez que le système récupère les systèmes déployés dépendants ailleurs, attendre que ces données aient besoin de voir un flux de données alternatif. Sinon, cela pourrait ne pas être une réponse "en temps réel" suffisante pour les besoins actuels et futurs de l'Internet des objets (IOT). 

si vous voulez un vrai stockage parallèle parallèle et non volatil de divers flux FIFO (au moins à un moment donné de la chaîne du signal), utilisez une mémoire FPGA et FRAM. La mémoire FRAM fonctionne à la vitesse d'horloge et les dispositifs FPGA peuvent être reprogrammés à la volée, ce qui permet d'ajouter et de supprimer des flux de données parallèles indépendants (dans le respect des contraintes bien sûr). 

0
Ron Harding

Les files de messages constituent la base de nombreux modèles décrits dans le livre et website - website - Enterprise Integration Patterns.

0
SteveD