Chcete-li se připojit k serveru fronty zpráv RabbitMQ, můžete napsat svůj klientský program pomocí různých programovacích jazyků. V současné době můžete psát klienta pomocí C#, erlang, java, perl, PHP, python a ruby.
Tento tutoriál vysvětluje, jak nainstalovat a nakonfigurovat klientskou knihovnu RabbitMQ a rozšíření AMQP PHP.
Jakmile si nainstalujete rozšíření AMQP PHP, můžete napsat program PHP pomocí AMQP, který se může připojit k serveru RabbitMQ a manipulovat se zprávami. .
Část 1:Instalace klientské knihovny RabbitMQ
1. Nainstalujte cmake
cmake je open source sestavovací systém, který používá knihovna rabbitmq-c. Než nainstalujeme rozšíření AMQP PHP, musíme nainstalovat knihovnu rabbitmq-c. K instalaci knihovny rabbitmq-c však potřebujeme cmake.
Ze stránky stahování cmake přejděte dolů do sekce Linux i386 a stáhněte si soubor cmake-2.8.10.2-Linux-i386.sh. Nebo použijte wget ke stažení do vašeho systému.
cd /usr/src wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2-Linux-i386.sh
Spusťte soubor cmake-2.8.10.2-Linux-i386.sh, který nainstaluje cmake do vašeho aktuálního adresáře, jak je uvedeno níže.
# /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
Přejmenujte adresář cmake a ověřte, zda je cmake správně nainstalován.
# 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. Stáhněte si klienta RabbitMQ
Nejprve nainstalujte knihovnu librabbitmq, kterou vyžaduje rozšíření AMQP PHP.
Stáhněte si soubor zip z git repozitáře rabbitmq-c.
cd /usr/src unzip rabbitmq-c-master.zip cd rabbitmq-c-master
3. Nakonfigurujte klienta RabbitMQ
Pomocí cmake nakonfigurujte klienta rabbitmq pro instalaci. Ujistěte se, že jste zadali PREFIX jako /usr/local, kam bude nainstalován klient 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. Nainstalujte klienta RabbitMQ
Po konfiguraci použijte cmake k instalaci klienta rabbitmq, jak je znázorněno níže. Tím se nainstaluje knihovna librabbitmq pod /usr/local. Částečný výstup je zobrazen níže.
# /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. Ověřte klienta RabbitMQ
Knihovna je dodávána s ukázkovým programem, který můžete použít k ověření, že funguje podle očekávání.
Z terminálu proveďte následující. Toto bude ve stavu čekání.
# cd /usr/src/rabbitmq-c-master/build # ./examples/amqp_listen localhost 5672 amq.direct test
Otevřete další terminál a proveďte následující. Tím se do fronty odešle zpráva „ahoj světe“.
# cd /usr/src/rabbitmq-c-master/build # ./examples/amqp_sendstring localhost 5672 amq.direct test "hello world"
Nyní se vraťte k prvnímu terminálu, který byl ve stavu čekání, kde nyní uvidíte zprávu „ahoj světe“, jak je uvedeno níže.
# ./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:
Část 2:Instalace rozšíření AMQP PHP
Amqp můžete nainstalovat pomocí pecl nebo můžete kompilovat ze zdroje.
Chcete-li nainstalovat pomocí pecl, proveďte následující:
# pecl search amqp amqp 1.0.9/(1.0.9 stable) Communicate with any AMQP compliant server # pecl install amqp
Chcete-li nainstalovat ze zdroje (což preferuji), postupujte podle níže uvedených kroků.
6. Stáhněte si rozšíření AMQP PHP
Stáhněte si nejnovější stabilní verzi rozšíření AMQP PHP. Aktuální stabilní verze je 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. Nakonfigurujte AMQP
Spusťte phpize a nakonfigurujte, jak je uvedeno níže.
# 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. Nainstalujte AMQP
Nainstalujte AMQP pomocí make a make install, jak je znázorněno níže. Zobrazí se částečný výstup.
# 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. Upravte php.ini a přidejte rozšíření AMQP
Vyhledejte ve svém systému soubor php.ini a přidejte k němu následující řádek.
# vi /usr/local/lib/php.ini extension=amqp.so
10. Ověřte rozšíření AMQP PHP
Vytvořte následující testovací stránku, která bude zobrazovat phpinfo, a umístěte ji pod htdocs vašeho Apache.
# vi /usr/local/apache2/htdocs/test.php <?php phpinfo(); ?>
Nyní, když zavoláte test.php z vašeho prohlížeče, uvidíte, že se na stránce zobrazuje rozšíření AMQP PHP, jak je uvedeno níže. Nyní můžete do svého kódu PHP zapsat volání AMQP a komunikovat se serverem RabbitMQ.