Rien ne sert de courrir avec RabbitMQ...
Posted on Mon 03 March 2014 in misc
RabbitMQ est un logiciel client/serveur permettant de passer des messages de manière asynchrone entre des processus, qu'ils soient hébergé sur une même machine ou sur des machines différentes. Je m'en vais tester tout cela sur une Debian Wheezy, puis deux...
Installation du paquetage
Magiquement simple
root@ankh:~ # aptitude install rabbitmq-server [...SNIP...] Ajout du groupe « rabbitmq » (GID 106)... Fait. Ajout de l'utilisateur système « rabbitmq » (UID 104) ... Ajout du nouvel utilisateur « rabbitmq » (UID 104) avec pour groupe d'appartenance.. Le répertoire personnel « /var/lib/rabbitmq » n'a pas été créé. [ ok ] Starting message broker: rabbitmq-server.
Quelques configurations utiles
L'utilité sera de communiquer des ordres d'un processus tournant sur une machine a un autre processus tournant sur une autre machine. Il faudra donc que notre serveur RabbitMQ réponde sur le réseau (et pas sur toutes les interfaces). Nous allons donc configurer cela grâce au fichier /etc/rabbitmq/rabbitmq-env.conf qui contient les variables d'environnement passées au processus serveur RabbitMQ.
Fichier /etc/rabbitmq/rabbitmq-env.conf
RABBITMQ_NODENAME='mq' RABBITMQ_NODE_IP_ADDRESS='10.0.0.10' RABBITMQ_CONFIG_FILE='/etc/rabbitmq/altconfig'
Ici je précise également un fichier de configuration que nous pourrons utiliser pour modifier le comportement par défaut du serveur. Si celui ci n'existe pas, les configurations par défaut sont utilisées.
Afin de vérifier nos configuration nous allons redémarrer le service RabbitMQ, demander son statut puis vérifier que celui ci écoute bien sur l'interface adaptée.
root@ankh:~# /etc/init.d/rabbitmq-server stop [ ok ] Stopping message broker: rabbitmq-server. root@ankh:~# /etc/init.d/rabbitmq-server start [ ok ] Starting message broker: rabbitmq-server. root@ankh:~# /etc/init.d/rabbitmq-server status Status of node mq@ankh ... [{pid,4844}, {running_applications,[{rabbit,"RabbitMQ","2.8.4"}, {os_mon,"CPO CXC 138 46","2.2.9"}, {sasl,"SASL CXC 138 11","2.2.1"}, {mnesia,"MNESIA CXC 138 12","4.7"}, {stdlib,"ERTS CXC 138 10","1.18.1"}, {kernel,"ERTS CXC 138 10","2.15.1"}]}, {os,{unix,linux}}, {erlang_version,"Erlang R15B01 (erts-5.9.1) [...SNIP...]\n"}, {memory,[{total,25482848}, [...SNIP...] {sockets_used,1}]}, {processes,[{limit,1048576},{used,117}]}, {run_queue,0}, {uptime,5}] ...done. root@ankh:~# netstat -apn |grep 5672 tcp 0 0 10.0.0.10:5672 0.0.0.0:* LISTEN 4844/beam root@ankh:~#
Ok, nous avons maintenant un serveur RabbitMQ prêt a prendre nos messages.