RabbitMQ è un server di code di messaggi open source che puoi utilizzare per creare le tue applicazioni di messaggistica. In parole povere, puoi inserire un messaggio nella coda da un'applicazione e recuperare il messaggio dalla coda dalla stessa applicazione o da un'altra applicazione. Puoi utilizzare un'ampia varietà di linguaggi di programmazione per connetterti a RabbitMQ, creare e recuperare i messaggi.
Installa Erlang
Affinché RabbitMQ funzioni, devi avere Erlang installato sul tuo sistema.
L'attuale versione stabile di Erlang è R16B, che può essere scaricata dal sito Web di Erlang.
cd /usr/save wget http://www.erlang.org/download/otp_src_R16B.tar.gz tar xvfz /usr/save/otp_src_R16B.tar.gz
Dopo aver scaricato Erlang, installa la versione Erlang R16B dal sorgente come mostrato di seguito.
cd otp_src_R16B LANG=C; export LANG ./configure make make install
Verifica Erlang
Ora, quando digiti erl dalla riga di comando, dovresti ottenere la shell Erlang come mostrato di seguito. Ciò indica che hai installato Erlang correttamente.
# 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
Scarica RabbitMQ
L'attuale versione stabile del server RabbitMQ è 3.0.4. Quando vai al sito web RabbitMQ, vedrai le seguenti versioni disponibili per il download per la piattaforma Linux:1) Debian / Ubuntu 2) Fedora / RHEL 3) Generic Unix 4) Solaris
In questo esempio, ho scelto RabbitMQ per Unix generico.
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
Avvia RabbitMQ Server
Avvia il server RabbitMQ passando l'opzione -distaccato come mostrato di seguito.
# cd /usr/save/rabbitmq_server-3.0.4 # sbin/rabbitmq-server -detached Warning: PID file not written; -detached was passed.
Se ricevi il messaggio di errore Could_not_start_tcp_listener durante l'avvio del server RabbitMQ, consulta la sezione di risoluzione dei problemi di seguito per una soluzione su come risolvere questo problema.
Verifica lo stato RabbitMQ
Usa il comando rabbitmqctl per verificare lo stato del server RabbitMQ e per interromperlo se necessario.
# 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.
Per arrestare un server RabbitMQ, usa il comando rabbitmqctl come mostrato di seguito.
# sbin/rabbitmqctl stop
Risoluzione dei problemi
Problema: Su CentOS 6, se hai usato yum per installare rabbitmq, o dal sorgente come spiegato sopra, e se ricevi "BOOT FAILED {could_not_start_tcp_listener ,{“::”,5672}}”, potresti avere un problema di conflitto di porte.
Soluzione: Il pacchetto Matahari installato per impostazione predefinita su CentOS 6, viene eseguito anche sulla porta 5672. Questo processo viene avviato per impostazione predefinita. Prova a fermare qpidd (daemon Qpid AMQP) e vedi se risolve il problema. Se non hai bisogno di Matahari, puoi anche disinstallare i pacchetti matahari, matahari-broker, qpid-cpp-server-ssl e qpid-cpp-server.
Arresta il demone qpidd e disabilitalo dall'avvio del sistema usando il 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
Ora, se avvii il server RabbitMQ, dovrebbe funzionare.