diff --git a/HowtoRabbitMQ.md b/HowtoRabbitMQ.md index 2723c446..6ee225a1 100644 --- a/HowtoRabbitMQ.md +++ b/HowtoRabbitMQ.md @@ -82,6 +82,57 @@ Si l'on veut que RabbitMQ n'écoute que sur l'interface *localhost* : ulimit -n 2048 ~~~ +## Utilisation + +La documentation officielle propose un [ensemble de tutoriels](https://www.rabbitmq.com/getstarted.html) pour Python, Java, Ruby, PHP, etc. + +Les lignes suivantes proposent un cas d'utilisation minimal avec un émetteur, une queue et un récepteur, le tout illustré en PHP. (Voir [ici](https://www.rabbitmq.com/tutorials/tutorial-one-php.html) pour la source d'inspiration). + +Prérequis : une instance du serveur RabbitMQ en local sur le port standard (5672), php 7/8 et composer. + +Dans un dossier de travail (par exemple `~/src/lapin`), éditer un nouveau fichier `composer.json` avec ce contenu : + +~~~ +{ + "require": { + "php-amqplib/php-amqplib": ">=3.0" + } +} +~~~ + +Installer `php-amqplib` (un client pour RabbitMQ) avec la commande suivante : + +~~~ +$ composer install +~~~ + +Récupérer les fichiers `send.php` et `receive.php` dans le dépôt officiel des tutoriels de rabbitmq : + +~~~ +$ wget https://raw.githubusercontent.com/rabbitmq/rabbitmq-tutorials/main/php/send.php +$ wget https://raw.githubusercontent.com/rabbitmq/rabbitmq-tutorials/main/php/receive.php +~~~ + +On voit dans le code que le récepteur (fichier `receive.php`) : + +- établie une nouvelle connexion au serveur RabbitMQ en tant qu'invité +- ouvre un canal et déclare une queue qui sera suivie +- se met en attente de messages à recevoir + +De son côté l'émetteur (fichier `send.php`) : + +- établie une nouvelle connexion au serveur RabbitMQ en tant qu'invité +- ouvre un canal et déclare une queue (la même que le récepteur) +- construit un message `Hello World!` et le publie dans le canal + +On peut obtenir des infos sur les queues gérées par RabbitMQ avec la commande suivante : + +~~~ +# rabbitmqctl list_queues +~~~ + +Note : en production, avec PHP, il est recommandé d'utiliser [amqproxy](https://github.com/cloudamqp/amqproxy) pour une meilleure persistance des connexions. + ## Management RabbitMQ ### rabbitmqctl