RabbitMQ es un servidor de cola de mensajes de código abierto que puede usar para crear sus aplicaciones de mensajería. En términos simples, puede colocar un mensaje en la cola desde una aplicación y recuperar el mensaje de la cola desde la misma aplicación o desde una aplicación diferente. Puede usar una amplia variedad de lenguajes de programación para conectarse a RabbitMQ, crear y recuperar los mensajes.
Instalar Erlang
Para que RabbitMQ funcione, debe tener Erlang instalado en su sistema.
La versión estable actual de Erlang es R16B, que se puede descargar desde el sitio web de Erlang.
cd /usr/save wget http://www.erlang.org/download/otp_src_R16B.tar.gz tar xvfz /usr/save/otp_src_R16B.tar.gz
Después de descargar Erlang, instale la versión Erlang R16B desde la fuente como se muestra a continuación.
cd otp_src_R16B LANG=C; export LANG ./configure make make install
Verificar Erlang
Ahora, cuando escriba erl desde la línea de comando, debería obtener Erlang Shell como se muestra a continuación. Esto indica que ha instalado Erlang con éxito.
# 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
Descargar RabbitMQ
La versión estable actual del servidor RabbitMQ es 3.0.4. Cuando vaya al sitio web de RabbitMQ, verá que las siguientes versiones están disponibles para descargar para la plataforma Linux:1) Debian/Ubuntu 2) Fedora/RHEL 3) Unix genérico 4) Solaris
En este ejemplo, he elegido RabbitMQ para 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
Iniciar servidor RabbitMQ
Inicie el servidor RabbitMQ pasando la opción separada como se muestra a continuación.
# cd /usr/save/rabbitmq_server-3.0.4 # sbin/rabbitmq-server -detached Warning: PID file not written; -detached was passed.
Si recibe el mensaje de error could_not_start_tcp_listener, mientras inicia el servidor RabbitMQ, consulte la sección de solución de problemas a continuación para obtener una solución sobre cómo solucionar este problema.
Verificar el estado de RabbitMQ
Use el comando rabbitmqctl para verificar el estado del servidor RabbitMQ y detenerlo si es necesario.
# 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.
Para detener un servidor RabbitMQ, use el comando rabbitmqctl como se muestra a continuación.
# sbin/rabbitmqctl stop
Resolución de problemas
Problema: En CentOS 6, si usó yum para instalar rabbitmq, o desde la fuente como se explicó anteriormente, y si obtiene "BOOT FAILED {could_not_start_tcp_listener ,{“::”,5672}}”, es posible que tenga un problema de conflicto de puerto.
Detenga el demonio qpidd y desactívelo desde el inicio del sistema usando el comando 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
Ahora, si inicia el servidor RabbitMQ, debería funcionar.