Um eine Verbindung zum RabbitMQ-Nachrichtenwarteschlangenserver herzustellen, können Sie Ihr Clientprogramm mit verschiedenen Programmiersprachen schreiben. Derzeit können Sie Clients mit C#, Erlang, Java, Perl, PHP, Python und Ruby schreiben.
In diesem Tutorial wird erklärt, wie die RabbitMQ-Clientbibliothek und die AMQP-PHP-Erweiterung installiert und konfiguriert werden.
Sobald Sie die AMQP-PHP-Erweiterung installiert haben, können Sie ein PHP-Programm mit AMQP schreiben, das eine Verbindung zum RabbitMQ-Server herstellen kann, um die Nachrichten zu bearbeiten .
Teil 1:Installieren Sie die RabbitMQ-Client-Bibliothek
1. Installieren Sie cmake
cmake ist ein Open-Source-Build-System, das von der Rabbitmq-c-Bibliothek verwendet wird. Wir müssen die Rabbitmq-c-Bibliothek installieren, bevor wir die AMQP-PHP-Erweiterung installieren. Aber um die rabbitmq-c-Bibliothek zu installieren, brauchen wir cmake.
Scrollen Sie von der cmake-Downloadseite nach unten zum Abschnitt Linux i386 und laden Sie die Datei cmake-2.8.10.2-Linux-i386.sh herunter. Oder verwenden Sie das wget, um es auf Ihr System herunterzuladen.
cd /usr/src wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2-Linux-i386.sh
Führen Sie die Datei cmake-2.8.10.2-Linux-i386.sh aus, die cmake wie unten gezeigt in Ihrem aktuellen Verzeichnis installiert.
# /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
Benennen Sie das cmake-Verzeichnis um und prüfen Sie, ob cmake richtig installiert ist.
# 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. Laden Sie den RabbitMQ-Client herunter
Installieren Sie zuerst die librabbitmq-Bibliothek, die von der AMQP-PHP-Erweiterung benötigt wird.
Laden Sie die ZIP-Datei aus dem Rabbitmq-c-Git-Repository herunter.
cd /usr/src unzip rabbitmq-c-master.zip cd rabbitmq-c-master
3. Konfigurieren Sie den RabbitMQ-Client
Verwenden Sie cmake, um den Rabbitmq-Client für die Installation zu konfigurieren. Achten Sie darauf, das PRÄFIX als /usr/local anzugeben, wo der Rabbitmq-Client installiert wird.
# 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. Installieren Sie den RabbitMQ-Client
Verwenden Sie nach der Konfiguration cmake, um den Rabbitmq-Client wie unten gezeigt zu installieren. Dadurch wird die librabbitmq-Bibliothek unter /usr/local installiert. Eine Teilausgabe wird unten angezeigt.
# /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. Überprüfen Sie den RabbitMQ-Client
Die Bibliothek enthält ein Beispielprogramm, mit dem Sie überprüfen können, ob es wie erwartet funktioniert.
Gehen Sie von einem Terminal aus wie folgt vor. Dies befindet sich in einem Wartezustand.
# cd /usr/src/rabbitmq-c-master/build # ./examples/amqp_listen localhost 5672 amq.direct test
Öffnen Sie ein weiteres Terminal und gehen Sie wie folgt vor. Dadurch wird eine „Hallo Welt“-Nachricht an die Warteschlange gesendet.
# cd /usr/src/rabbitmq-c-master/build # ./examples/amqp_sendstring localhost 5672 amq.direct test "hello world"
Gehen Sie jetzt zurück zum ersten Terminal, das sich im Wartezustand befand, wo Sie nun die Nachricht „Hallo Welt“ sehen, wie unten gezeigt.
# ./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:
Teil 2:Installieren Sie die AMQP-PHP-Erweiterung
Sie können amqp mit pecl installieren oder aus dem Quellcode kompilieren.
Um mit pecl zu installieren, gehen Sie einfach wie folgt vor:
# pecl search amqp amqp 1.0.9/(1.0.9 stable) Communicate with any AMQP compliant server # pecl install amqp
Um von der Quelle zu installieren (was ich bevorzuge), folgen Sie den Schritten unten.
6. Laden Sie die AMQP-PHP-Erweiterung herunter
Laden Sie die neueste stabile Version der AMQP-PHP-Erweiterung herunter. Die aktuelle stabile Version ist 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. AMQP konfigurieren
Führen Sie phpize aus und konfigurieren Sie wie unten gezeigt.
# 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. Installieren Sie AMQP
Installieren Sie AMQP mit make und make install wie unten gezeigt. Teilausgabe wird angezeigt.
# 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. Ändern Sie php.ini und fügen Sie die AMQP-Erweiterung hinzu
Suchen Sie die Datei php.ini auf Ihrem System und fügen Sie ihr die folgende Zeile hinzu.
# vi /usr/local/lib/php.ini extension=amqp.so
10. Überprüfen Sie die AMQP-PHP-Erweiterung
Erstellen Sie die folgende Testseite, die phpinfo anzeigt, und platzieren Sie diese unter den htdocs Ihres Apache.
# vi /usr/local/apache2/htdocs/test.php <?php phpinfo(); ?>
Wenn Sie nun test.php von Ihrem Browser aus aufrufen, sehen Sie, dass die AMQP-PHP-Erweiterung wie unten gezeigt auf der Seite angezeigt wird. Jetzt können Sie AMQP-Aufrufe in Ihren PHP-Code schreiben, um mit dem RabbitMQ-Server zu kommunizieren.