Installation et configuration de RabbitMQ sous Windows

Présentation de RabbitMQ

Les intergiciels de file d'attente de messages jouent un rôle crucial dans les systèmes distribués. Ils permettent de résoudre les problèmes de couplage applicatif, de traiter des opérations de manière asynchrone, et de lisser les pics de charge. Parmi les solutions les plus répandues, on trouve ActiveMQ, RabbitMQ, Kafka et RocketMQ.

RabbitMQ est un courtier de messages open source implémentant le protocole AMQP (Advanced Message Queuing Protocol), développé en Erlang. Conçu initialement pour le secteur financier, il excelle en termes de fiabilité, d'évolutivité et de disponibilité. Ses principales caractéristiques incluent :

  • Fiabilité : Gestion de la persistance, accusés de réception et confirmation de publication.
  • Routage flexible : Utilisation d'Exchanges pour acheminer les messages avant leur arrivée dans les files.
  • Clustering : Possibilité de regrouper plusieurs serveurs pour former un courtier logique unique.
  • Haute disponibilité : Mise en miroir des files sur plusieurs nœuds du cluster.
  • Multi-protocole et multi-clients : Prise en charge de STOMP, MQTT, et bibliothèques pour la quasi-totalité des langages (Java, .NET, Python, etc.).
  • Interface d'administration et traçabilité : Panneau web pour la supervision, avec un système de suivi des messages en cas d'erreur.

Prérequis à l'installation

Avant de procéder, il est impératif de télécharger deux éléments : l'environnement d'exécution Erlang OTP ainsi que l'installateur du serveur RabbitMQ pour Windows. Assurez-vous de choisir des versions compatibles entre elles en consultant la matrice officielle de compatibilité.

Procédure d'installation

1. Configuration d'Erlang

Lancez l'exécutable d'Erlang. Une fois l'installation terminée, il convient de définir les variables d'environnement système.

Créez une nouvelle variable système nommée ERL_PATH pointant vers le répertoire d'installation d'Erlang :

ERL_PATH  Valeur : C:\Program Files\Erlang\otp

Ajoutez ensuite le dossier binaire à la variable Path du système :

%ERL_PATH%\bin

Pour vérifier l'installation, ouvrez une invite de commande (Win + R, puis cmd) et tapez erl. L'affichage de la version confirme que l'opération a réussi.

2. Déploiement de RabbitMQ

Exécutez l'installateur de RabbitMQ. Par défaut, le service Windows démarre automatiquement.

Pour activer l'interface de gestion web, ouvrez l'invite de commande et déplacez-vous dans le dossier sbin de RabbitMQ. Par exemple :

cd "C:\Program Files\RabbitMQ Server\rabbitmq_server-x.y.z\sbin"

Activez le plugin d'administration avec la comande suivante :

rabbitmq-plugins.bat enable rabbitmq_management

Vérifiez le statut du service via :

rabbitmqctl.bat status

Si le système fonctionne correctement, vous pouvez accéder au panneau d'administration depuis votre navigateur à l'adresse :

http://127.0.0.1:15672

Résolution des erreurs courantes

Authentication failed (rejected by the remote node)

Cette erreur est souvent liée à une incohérence des cookies Erlang. Comparez le contenu du fichier .erlang.cookie situé dans deux dossiers distincts et uniformisez-les. Si la modification ne prend pas effet immédiatement, redémarrez l'ordinateur pour vider les caches.

C:\Windows\System32\config\systemprofile\.erlang.cookie
C:\Users\{NomUtilisateur}\.erlang.cookie

ArgumentError (stdlib) ou Distribution failed

Si le service refuse de démarrer, vérifiez que ni le nom de l'utilisateur Windows, ni les chemins d'accès aux dossiers de logs et de base de données de RabbitMQ ne contiennent des caractères non-ASCII (comme des lettres chinoises). Les chemins doivent être strictement en anglais.

epmd reports: node 'rabbit' not running at all

Survenant généralement après le renommage d'un nom d'hôte chinois en anglais, cette erreur indique que le nœud n'est pas démarré. Pour la corriger, réinstallez le service RabbitMQ :

rabbitmq-service.bat remove
rabbitmq-service.bat install

En cas d'échec, tentez de lancer le serveur manuellement :

rabbitmq-server.bat start

start_error, failed_to_start_child

Ceci survient lorsque les versions de RabbitMQ et d'Erlang ne sont pas compatibles. Référez-vous au tableau de compatibilité officiel pour aligner correctement les versions.

Étiquettes: rabbitmq Erlang AMQP Windows Message Broker

Publié le 28 juillet à 22h29