RabbitMQ est un serveur de file d'attente de messages open source que vous pouvez utiliser pour créer vos applications de messagerie. En termes simples, vous pouvez placer un message dans la file d'attente à partir d'une application et récupérer le message de la file d'attente à partir de la même application ou d'une application différente. Vous pouvez utiliser une grande variété de langages de programmation pour vous connecter à RabbitMQ, créer et récupérer les messages.
Installer Erlang
Pour que RabbitMQ fonctionne, vous devez avoir installé Erlang sur votre système.
La version stable actuelle d'Erlang est R16B, qui peut être téléchargée sur le site Web d'Erlang.
cd /usr/save wget http://www.erlang.org/download/otp_src_R16B.tar.gz tar xvfz /usr/save/otp_src_R16B.tar.gz
Après avoir téléchargé Erlang, installez la version Erlang R16B à partir de la source comme indiqué ci-dessous.
cd otp_src_R16B LANG=C; export LANG ./configure make make install
Vérifier Erlang
Maintenant, lorsque vous tapez erl à partir de la ligne de commande, vous devriez obtenir le shell Erlang comme indiqué ci-dessous. Cela indique que vous avez installé Erlang avec succès.
# erl Erlang R16B (erts-5.10.1) [source] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false] Eshell V5.10.1 (abort with ^G) 1> BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded (v)ersion (k)ill (D)b-tables (d)istribution a
Télécharger RabbitMQ
La version stable actuelle du serveur RabbitMQ est la 3.0.4. Lorsque vous accédez au site Web de RabbitMQ, vous verrez que les versions suivantes sont disponibles au téléchargement pour la plate-forme Linux :1) Debian / Ubuntu 2) Fedora / RHEL 3) Generic Unix 4) Solaris
Dans cet exemple, j'ai choisi RabbitMQ pour Generic Unix.
cd /usr/save wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.0.4/rabbitmq-server-generic-unix-3.0.4.tar.gz tar xvfz rabbitmq-server-generic-unix-3.0.4.tar.gz cd rabbitmq_server-3.0.4
Démarrer le serveur RabbitMQ
Démarrez le serveur RabbitMQ en passant l'option -tached comme indiqué ci-dessous.
# cd /usr/save/rabbitmq_server-3.0.4 # sbin/rabbitmq-server -detached Warning: PID file not written; -detached was passed.
Si vous obtenez le message d'erreur could_not_start_tcp_listener lors du démarrage du serveur RabbitMQ, consultez la section de dépannage ci-dessous pour trouver une solution permettant de résoudre ce problème.
Vérifier le statut de RabbitMQ
Utilisez la commande rabbitmqctl pour vérifier l'état du serveur RabbitMQ et l'arrêter si nécessaire.
# sbin/rabbitmqctl status Status of node 'rabbit@db-dev' ... [{pid,30069}, {running_applications,[{rabbit,"RabbitMQ","3.0.4"}, {mnesia,"MNESIA CXC 138 12","4.8"}, {os_mon,"CPO CXC 138 46","2.2.11"}, {sasl,"SASL CXC 138 11","2.3.1"}, {stdlib,"ERTS CXC 138 10","1.19.1"}, {kernel,"ERTS CXC 138 10","2.16.1"}]}, {os,{unix,linux}}, {erlang_version,"Erlang R16B (erts-5.10.1) [source] [smp:4:4] [async-threads:30] [hipe] [kernel-poll:true]\n"}, {memory,[{total,15087368}, {connection_procs,1432}, {queue_procs,2864}, {plugins,0}, {other_proc,4748681}, {mnesia,30672}, {mgmt_db,0}, {msg_index,8652}, {other_ets,369668}, {binary,5976}, {code,6973062}, {atom,387397}, {other_system,2558964}]}, {vm_memory_high_watermark,0.4}, {vm_memory_limit,1699810508}, {disk_free_limit,1000000000}, {disk_free,913096704}, {file_descriptors,[{total_limit,924}, {total_used,3}, {sockets_limit,829}, {sockets_used,1}]}, {processes,[{limit,1048576},{used,124}]}, {run_queue,0}, {uptime,6}] ...done.
Pour arrêter un serveur RabbitMQ, utilisez la commande rabbitmqctl comme indiqué ci-dessous.
# sbin/rabbitmqctl stop
Dépannage
Problème : Sur CentOS 6, si vous avez utilisé yum pour installer rabbitmq, ou à partir de la source comme expliqué ci-dessus, et si vous obtenez "BOOT FAILED {could_not_start_tcp_listener ,{“::”,5672}}”, vous pourriez avoir un problème de conflit de port.
Solution : Le package Matahari installé par défaut sur CentOS 6 s'exécute également sur le port 5672. Ce processus est lancé par défaut. Essayez d'arrêter le qpidd (démon Qpid AMQP) et voyez s'il résout le problème. Si vous n'avez pas besoin de Matahari, vous pouvez également désinstaller les packages matahari, matahari-broker, qpid-cpp-server-ssl et qpid-cpp-server.
Arrêtez le démon qpidd et désactivez-le au démarrage du système à l'aide de la commande chkconfig.
# chkconfig --list | grep -i qpid qpidd 0:off 1:off 2:on 3:on 4:on 5:on 6:off # service qpidd stop Stopping Qpid AMQP daemon: [ OK ] # chkconfig qpidd off # chkconfig --list | grep -i qpid qpidd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
Maintenant, si vous démarrez le serveur RabbitMQ, cela devrait fonctionner.