Untuk terhubung ke server antrian pesan RabbitMQ, Anda dapat menulis program klien Anda menggunakan berbagai bahasa pemrograman. Saat ini Anda dapat menulis klien menggunakan C#, erlang, java, perl, PHP, python, dan ruby.
Tutorial ini menjelaskan cara menginstal dan mengkonfigurasi library klien RabbitMQ dan ekstensi AMQP PHP.
Setelah Anda menginstal ekstensi AMQP PHP, Anda dapat menulis program PHP menggunakan AMQP, yang dapat terhubung ke server RabbitMQ untuk memanipulasi pesan .
Bagian 1:Instal Perpustakaan Klien RabbitMQ
1. Instal cmake
cmake adalah sistem build open source yang digunakan oleh perpustakaan rabbitmq-c. Kita perlu menginstal perpustakaan rabbitmq-c sebelum kita menginstal ekstensi AMQP PHP. Tapi, untuk menginstall library rabbitmq-c, kita membutuhkan cmake.
Dari halaman unduhan cmake, lihat bagian Linux i386 dan unduh file cmake-2.8.10.2-Linux-i386.sh. Atau, gunakan wget untuk mengunduhnya di sistem Anda.
cd /usr/src wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2-Linux-i386.sh
Jalankan file cmake-2.8.10.2-Linux-i386.sh, yang akan menginstal cmake di bawah direktori Anda saat ini seperti yang ditunjukkan di bawah ini.
# /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
Ganti nama direktori cmake, dan verifikasi bahwa cmake telah terinstal dengan benar.
# 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. Unduh Klien RabbitMQ
Pertama-tama instal pustaka librabbitmq, yang diperlukan oleh ekstensi AMQP PHP.
Unduh file zip dari penyimpanan git rabbitmq-c.
cd /usr/src unzip rabbitmq-c-master.zip cd rabbitmq-c-master
3. Konfigurasikan Klien RabbitMQ
Gunakan cmake untuk mengonfigurasi klien rabbitmq untuk diinstal. Pastikan untuk menentukan PREFIX sebagai /usr/local, tempat klien rabbitmq akan diinstal.
# 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. Instal Klien RabbitMQ
Setelah mengkonfigurasi, gunakan cmake untuk menginstal klien rabbitmq seperti yang ditunjukkan di bawah ini. Ini akan menginstal perpustakaan librabbitmq di bawah /usr/local. Output sebagian ditunjukkan di bawah ini.
# /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. Verifikasi Klien RabbitMQ
Pustaka dilengkapi dengan contoh program yang dapat Anda gunakan untuk memverifikasi bahwa ia berfungsi seperti yang diharapkan.
Dari terminal, lakukan hal berikut. Ini akan dalam keadaan menunggu.
# cd /usr/src/rabbitmq-c-master/build # ./examples/amqp_listen localhost 5672 amq.direct test
Buka terminal lain, dan lakukan hal berikut. Ini akan mengirim pesan “hello world” ke antrean.
# cd /usr/src/rabbitmq-c-master/build # ./examples/amqp_sendstring localhost 5672 amq.direct test "hello world"
Sekarang kembali ke terminal pertama yang berada dalam status menunggu, di mana Anda sekarang akan melihat pesan "hello world" seperti yang ditunjukkan di bawah ini.
# ./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:
Bagian 2:Instal Ekstensi AMQP PHP
Anda dapat menginstal amqp menggunakan pecl, atau Anda dapat mengkompilasi dari sumber.
Untuk menginstal menggunakan pecl, lakukan saja hal berikut:
# pecl search amqp amqp 1.0.9/(1.0.9 stable) Communicate with any AMQP compliant server # pecl install amqp
Untuk menginstal dari sumber (yang saya sukai), ikuti langkah-langkah di bawah ini.
6. Unduh ekstensi AMQP PHP
Unduh versi stabil terbaru dari ekstensi AMQP PHP. Versi stabil saat ini adalah 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. Konfigurasi AMQP
Jalankan phpize dan konfigurasikan seperti gambar di bawah ini.
# 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. Instal AMQP
Instal AMQP menggunakan make dan make install seperti gambar di bawah ini. Keluaran sebagian ditampilkan.
# 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. Ubah php.ini dan tambahkan Ekstensi AMQP
Temukan file php.ini di sistem Anda dan tambahkan baris berikut ke dalamnya.
# vi /usr/local/lib/php.ini extension=amqp.so
10. Verifikasi Ekstensi AMQP PHP
Buat halaman pengujian berikut yang akan menampilkan phpinfo, dan letakkan ini di bawah htdocs Apache Anda.
# vi /usr/local/apache2/htdocs/test.php <?php phpinfo(); ?>
Sekarang, jika Anda memanggil test.php dari browser Anda, Anda akan melihat bahwa ekstensi AMQP PHP ditampilkan pada halaman seperti yang ditunjukkan di bawah ini. Sekarang, Anda dapat menulis panggilan AMQP dalam kode PHP Anda untuk berbicara dengan server RabbitMQ.