Zanim zaczniemy pracę z systemem RabbitMQ, warto zrozumieć, jak działa wykonywanie skryptów napisanych w języku PHP. Jak wiadomo język PHP jest językiem skryptowym, interpretowanym przez silnik Zend.
PHP może działać w kilku trybach:
Na potrzeby tego tutoriala będziemy uruchamiać skrypty PHP w trybie CLI w postaci:
$ php skrypt.php
Skrypty PHP domyślnie nie działają w sposób bezprzerwowy – uruchamiany jest skrypt, wykonywane są określone w nim algorytmy, po czym program kończy swoje zadanie.
W przypadku pracy z RabbitMQ skrypt nadawcy będzie działał właśnie w taki sposób. Skrypt odbiorcy będzie zaś działał bez przerwy – oczekując na komunikaty w kolejce – do momentu przerwania jego pracy za pomocą kombinacji CTRL+C lub zabicia procesu.
echo "Witamy w Świecie PHP!\n";
Po zapisaniu powyższego skryptu jako witamy.php i jego uruchomieniu:
$ php witamy.php
powinniśmy zobaczyć następujący rezultat:
Witamy w Świecie PHP!
Od kilku lat każde liczące się środowisko programowania posiada własny menadżer pakietów. W przypadku języka PHP przez długie lata taką rolę pełniły:
Opublikowanie menadżera pakietów o nazwie Composer w marcu 2012 roku zdecydowanie zmieniło sposób programowania w języku PHP, gdyż od wtedy rozpoczął się proces tworzenia kodu, który można wielokrotnie używać w różnych projektach.
Listę publicznych pakietów obsługiwanych przez można przeglądać na stronie Packagist.
Menadżer pakietów Composer przechowuje informacje o pakietach w:
Więcej na temat programu Composer znaleźć można na stronie tego projektu.
Program Composer można albo zainstalować w systemie operacyjnym:
$ sudo apt-get install composer
i uruchamiać następująco
$ composer polecenie
albo pobrać jego wersję PHAR ze strony https://getcomposer.org/download/ i uruchamiać
$ php composer.phar polecenie
Niskopoziomowe wsparcie dla RabbitMQ i protokołu AMQP 0-8-x/0-9-x realizowane jest dzięki bibliotece php-amqplib, która znajduje się w repozytorium Packagist. Słowo niskopoziomowe zostało tutaj użyte celowo, gdyż na bibliotece php-amqplib nadbudowano wsparcie dla protokołu AMQP 0-9-x w różnych frameworkach PHP takich jak Zend Framework, Symfony czy Laravel.
Aby zainstalować bibliotekę php-amqplib w naszym projekcie należy dodać ją do pliku composer.json:
{
"name": "rabbitmq_eu/kurs-RabbitMQ-php",
"description": "Tutorial RabbitMQ dla środowiska PHP",
"keywords": ["RabbitMQ", "AMQP 0-9-x", "PHP", "php-amqplib", "RattiQue"],
"type": "project",
"license": "BSD-3-Clause",
"homepage" : "https://www.rabbitmq.eu/",
"authors": [
{
"name": "Tomasz Kuter",
"email": "tkuter@loculus.pl",
"homepage": "https://tomaszkuter.com/en/"
}
],
"require": {
"ext-bcmath": "*",
"ext-mbstring": "*",
"php-amqplib/php-amqplib": ">=2.7.2"
}
}
a następnie wywołać polecenie:
$ composer install
Wszystkie zależności powinny zostać ściągnięte do katalogu vendor.
Teraz wystarczy, że na początku naszego skryptu wskażemy, by załadować ściągnięte pakiety:
require_once __DIR__ . '/vendor/autoload.php';
i możemy przejść do pracy z RabbitMQ.
W przypadku języka PHP istnieje natywne, skompilowane rozszerzenie php-amqp, które oferuje dodatkową funkcjonalność programistom PHP podobnie jak na przykład:
Dostarcza ono podstawową obsługę protokołu AMQP 0-8-x i jest zgodne z protokołem AMQP 0-9-x.
Obsługa ta realizowana jest za pomocą pięciu klas (nie wliczając klas wyjątków):
W tutorialach dla języka PHP będziemy korzystać z bardziej popularnego, choć wolniejszego rozwiązania, a mianowicie wspomnianej biblioteki php-amqplib.
Osoby zainteresowane rozszerzeniem php-amqp odsyłam do tutoriali dostarczonych przez firmę Pivotal Software Inc. dostępnych na GitHubie.
Kod programów omawianych w tym tutorialu znajduje się pod adresem:
https://github.com/RattiQue/tutorials-pl-php
Web Developer z ponad 8-letnim, komercyjnym doświadczeniem w tworzeniu stron i aplikacji internetowych oraz paneli administracyjnych w PHP, JavaScript, HTML i CSS.
Aktualnie zainteresowany architekturą mikroserwisów, które umożliwiają budowanie skalowalnych aplikacji internetowych.