RabbitMQ est un intergiciel de message distribué développé dans le langage Erlang et open source. Il prend en charge le protocole de file d'attente de messages avancé (AMQP) et des bibliothèques clientes dans divers langages de programmation tels que Java, Golang, PHP et Python.

Caractéristiques

  • Fiabilité : Garantit la fiabilité grâce à la persistance des messages, la prise en charge des transactions, la confirmation de réception par le consommateur et l'émetteur, etc.
  • Mécanisme de routage : Prise en charge des modèles d'abonnement et de consommation courants tels que la diffusion, l'abonnement, la correspondance d'en-tête, etc.
  • Scalabilité : Plusieurs nœuds RabbitMQ peuvent former un cluster et étendre dynamiquement le cluster selon les besoins réels de l'entreprise.
  • Haute disponibilité : Les files d'attente peuvent être définies en tant que miroirs sur des machines dans le cluster, ce qui permet aux files d'attente de rester disponibles en cas de problèmes avec certains nœuds.
  • Protocoles multiples : En plus de la prise en charge native de l'AMQP, RabbitMQ prend également en charge plusieurs protocoles d'intergiciel de messages tels que STOMP, MQTT, etc.
  • Clients multi-langages : RabbitMQ prend en charge presque tous les langages couramment utilisés, tels que Java, Python, Ruby, PHP, C#, JavaScript, etc.
  • Interface de gestion : RabbitMQ fournit une interface conviviale pour surveiller et gérer les messages et les nœuds du cluster.
  • Mécanisme de plugin : RabbitMQ fournit de nombreux plugins pour des extensions étendues, et les utilisateurs peuvent également écrire leurs propres plugins.

Principaux cas d'utilisation

Traitement asynchrone

Les parties non essentielles ou moins importantes du processus métier peuvent être notifiées de manière asynchrone au système cible à l'aide de notifications de messages, permettant au processus métier principal de répondre promptement sans attendre de manière synchrone les résultats du traitement d'autres systèmes.

Découplage d'application

L'expansion commerciale peut être réalisée sur la base de mécanismes d'abonnement aux messages. Par exemple, dans un scénario de commande de commerce électronique, lorsqu'un utilisateur passe une commande, un message de commande est généré. Le module d'entrepôt peut s'abonner au message de commande pour l'expédition, le module de points peut s'abonner au message de commande pour l'ajout de points, et le module SMS peut s'abonner au message de commande pour l'envoi de messages texte, et ainsi de suite.

Lissage des pics de charge

Comme il peut y avoir des différences dans les capacités de traitement des systèmes amont et aval, les files d'attente de messages peuvent agir comme un régulateur pour permettre aux systèmes aval de gérer le trafic à un rythme régulier.

Par exemple, dans le cas du paiement réussi d'une commande et de la notification de l'entrepôt pour l'expédition, si le module de commande actuel prend en charge une haute concurrence de 1000 et que l'expédition de l'entrepôt ne prend en charge que 100, l'introduction d'une file d'attente de messages peut permettre au module de l'entrepôt de s'abonner au message de commande et de gérer l'expédition lentement dans une file d'attente.

ps: C'est comme faire la queue pour le métro.