Para conectarse al servidor de cola de mensajes de RabbitMQ, puede escribir su programa cliente usando varios lenguajes de programación. Actualmente puede escribir clientes usando C#, erlang, java, perl, PHP, python y ruby.
Este tutorial explica cómo instalar y configurar la biblioteca cliente RabbitMQ y la extensión PHP AMQP.
Una vez que tenga instalada la extensión PHP AMQP, puede escribir un programa PHP usando AMQP, que puede conectarse al servidor RabbitMQ para manipular los mensajes. .
Parte 1:instalar la biblioteca de cliente de RabbitMQ
1. Instalar cmake
cmake es un sistema de compilación de código abierto que utiliza la biblioteca rabbitmq-c. Necesitamos instalar la biblioteca rabbitmq-c antes de instalar la extensión PHP AMQP. Pero, para instalar la biblioteca rabbitmq-c, necesitamos cmake.
Desde la página de descarga de cmake, baje hasta la sección Linux i386 y descargue el archivo cmake-2.8.10.2-Linux-i386.sh. O use wget para descargarlo en su sistema.
cd /usr/src wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2-Linux-i386.sh
Ejecute el archivo cmake-2.8.10.2-Linux-i386.sh, que instalará cmake en su directorio actual como se muestra a continuación.
# /bin/sh cmake-2.8.10.2-Linux-i386.sh Do you accept the license? [yN]: y By default the CMake will be installed in: "/usr/src/cmake-2.8.10.2-Linux-i386" Do you want to include the subdirectory cmake-2.8.10.2-Linux-i386? Saying no will install in: "/usr/src" [Yn]: y Using target directory: /usr/src/cmake-2.8.10.2-Linux-i386 Extracting, please wait... tar: Read 4096 bytes from - Unpacking finished successfully
Cambie el nombre del directorio cmake y verifique que cmake esté instalado correctamente.
# cd /usr/src # mv cmake-2.8.10.2-Linux-i386 cmake # /usr/save/cmake/bin/cmake --version cmake version 2.8.10.2
2. Descargar Cliente RabbitMQ
Primero instale la biblioteca librabbitmq, que es requerida por la extensión PHP de AMQP.
Descargue el archivo zip del repositorio git de rabbitmq-c.
cd /usr/src unzip rabbitmq-c-master.zip cd rabbitmq-c-master
3. Configurar el cliente RabbitMQ
Use cmake para configurar el cliente rabbitmq para su instalación. Asegúrese de especificar el PREFIJO como /usr/local, donde se instalará el cliente rabbitmq.
# mkdir build # cd build # /usr/src/cmake/bin/cmake -DCMAKE_INSTALL_PREFIX=/usr/local .. -- The C compiler identification is GNU 4.1.2 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- CMAKE_BUILD_TYPE not specified. Creating Release build -- Found C inline keyword: inline -- Looking for getaddrinfo -- Looking for getaddrinfo - found -- Looking for socket -- Looking for socket - found -- Looking for htonll -- Looking for htonll - not found -- Found POPT: /usr/include -- Could NOT find XMLTO (missing: XMLTO_EXECUTABLE) -- Building rabbitmq as a shared library - yes -- Building rabbitmq as a static library - no -- Configuring done -- Generating done -- Build files have been written to: /usr/save/rabbitmq-c-master/build
4. Instalar el cliente RabbitMQ
Después de configurar, use cmake para instalar el cliente rabbitmq como se muestra a continuación. Esto instalará la biblioteca librabbitmq en /usr/local. La salida parcial se muestra a continuación.
# /usr/src/cmake/bin/cmake --build . --target install Scanning dependencies of target rabbitmq [ 2%] Building C object librabbitmq/CMakeFiles/rabbitmq.dir/amqp_framing.c.o [ 4%] Building C object librabbitmq/CMakeFiles/rabbitmq.dir/amqp_api.c.o .. [ 95%] Built target amqp-publish [ 97%] Building C object tests/CMakeFiles/test_parse_url.dir/test_parse_url.c.o [100%] Building C object tests/CMakeFiles/test_tables.dir/test_tables.c.o [100%] Built target test_tables Install the project... -- Install configuration: "Release" -- Installing: /usr/local/lib/pkgconfig/librabbitmq.pc -- Installing: /usr/local/lib/librabbitmq.so.1.0.1 -- Installing: /usr/local/lib/librabbitmq.so.1 -- Installing: /usr/local/lib/librabbitmq.so -- Installing: /usr/local/include/amqp.h -- Installing: /usr/local/include/amqp_framing.h -- Installing: /usr/local/bin/amqp-publish -- Removed runtime path from "/usr/local/bin/amqp-publish" -- Installing: /usr/local/bin/amqp-get -- Removed runtime path from "/usr/local/bin/amqp-get" -- Installing: /usr/local/bin/amqp-consume -- Removed runtime path from "/usr/local/bin/amqp-consume" -- Installing: /usr/local/bin/amqp-declare-queue -- Removed runtime path from "/usr/local/bin/amqp-declare-queue" -- Installing: /usr/local/bin/amqp-delete-queue -- Removed runtime path from "/usr/local/bin/amqp-delete-queue"
5. Verificar el cliente de RabbitMQ
La biblioteca viene con un programa de ejemplo que puede usar para verificar que funciona como se espera.
Desde una terminal, haga lo siguiente. Estará en estado de espera.
# cd /usr/src/rabbitmq-c-master/build # ./examples/amqp_listen localhost 5672 amq.direct test
Abra otro terminal y haga lo siguiente. Esto enviará un mensaje de "hola mundo" a la cola.
# cd /usr/src/rabbitmq-c-master/build # ./examples/amqp_sendstring localhost 5672 amq.direct test "hello world"
Ahora regrese a la primera terminal que estaba en estado de espera, donde ahora verá el mensaje "hola mundo" como se muestra a continuación.
# ./examples/amqp_listen localhost 5672 amq.direct test Result 0 Frame type 1, channel 1 Method AMQP_BASIC_DELIVER_METHOD Delivery 1, exchange amq.direct routingkey test Content-type: text/plain ---- 00000000: 68 65 6C 6C 6F 20 77 6F : 72 6C 64 hello world 0000000B:
Parte 2:instalar la extensión PHP de AMQP
Puede instalar amqp usando pecl, o puede compilar desde la fuente.
Para instalar usando pecl, simplemente haga lo siguiente:
# pecl search amqp amqp 1.0.9/(1.0.9 stable) Communicate with any AMQP compliant server # pecl install amqp
Para instalar desde la fuente (que prefiero), siga los pasos a continuación.
6. Descargar extensión PHP AMQP
Descargue la última versión estable de la extensión PHP AMQP. La versión estable actual es 1.0.10
cd /usr/src wget http://pecl.php.net/get/amqp-1.0.10.tgz tar xvfz amqp-1.0.10.tgz cd amqp-1.0.9
7. Configurar AMQP
Ejecute phpize y configure como se muestra a continuación.
# phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626 # ./configure --with-amqp checking for egrep... grep -E checking for a sed that does not truncate output... /bin/sed .. creating libtool appending configuration tag "CXX" to libtool configure: creating ./config.status config.status: creating config.h
8. Instalar AMQP
Instale AMQP usando make y make install como se muestra a continuación. Se muestra la salida parcial.
# make .. creating amqp.la (cd .libs && rm -f amqp.la && ln -s ../amqp.la amqp.la) /bin/sh /usr/save/amqp-1.0.9/libtool --mode=install cp ./amqp.la /usr/save/amqp-1.0.9/modules cp ./.libs/amqp.so /usr/save/amqp-1.0.9/modules/amqp.so cp ./.libs/amqp.lai /usr/save/amqp-1.0.9/modules/amqp.la PATH="$PATH:/sbin" ldconfig -n /usr/save/amqp-1.0.9/modules ---------------------------------------------------------------------- Libraries have been installed in: /usr/save/amqp-1.0.9/modules If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,--rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- Build complete.
# make install Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20090626/ .. You should add "extension=amqp.so" to php.ini
9. Modifique php.ini y agregue la extensión AMQP
Localice el archivo php.ini en su sistema y agréguele la siguiente línea.
# vi /usr/local/lib/php.ini extension=amqp.so
10. Verificar la extensión PHP de AMQP
Cree la siguiente página de prueba que mostrará phpinfo y colóquela en htdocs de Apache.
# vi /usr/local/apache2/htdocs/test.php <?php phpinfo(); ?>
Ahora, si llama a test.php desde su navegador, verá que la extensión PHP AMQP se muestra en la página como se muestra a continuación. Ahora, puede escribir llamadas AMQP en su código PHP para hablar con el servidor RabbitMQ.