Exemple minimal de micro service basé Node.js et Express.js illustrant la communication asynchrone à l'aide de messages basés sur le protocole AMQP et le Message Broker RabbitMQ
- Interface web RabbitMQ http://localhost:15673/ (ou 15672 selon votre config),
- Identifiant : guest, Mot de passe : guest
- Création et remplissage des fichiers
./mq_consumer_service/.env
et./mq/.env
sur la base des fichiers ".env.example" fournis, - Création d'une Queue du même nom que celui écouté par le service mq_consumer_service (dans mon exemple the_queue), en vous référant à la valeur de la variable d'environnement MQ_QUEUE renseignée dans
./mq_consumer_service/.env
- Dans le bloc Consumers, le nom du service mq_consumer_service doit apparaître (cela signifie que le service est bien en écoute de la queue the_queue),
- Depuis l'onglet Queue, sélectionner la queue nommée the_queue, puis envoyer un message avec un payload au format JSON comme
JSON {"message":"Hello, World !"}
- Observer les logs du service mq_consumer_service pour vérifier que le service réagit bien au message envoyé dans la queue the_queue,
- Le service mq_consumer_service est directement installé et démarré par Docker, ne pas effectuer de commande
npm install
ounpm start
. Un système de Hot Reloading permet de recharger le service Node.js à chaque modification d'un fichier dans le dossier./mq_consumer_service
,
-
Création et remplissage des fichiers
./mq_provider_service/.env
et./mq/.env
sur la base des fichiers ".env.example" fournis, -
Le service mq_provider_service est directement installé et démarré par Docker, ne pas effectuer de commande
npm install
ounpm start
. Un système de Hot Reloading permet de recharger le service Node.js à chaque modification d'un fichier dans le dossier./mq_provider_service
, -
L'Envoi d'une requête HTTP POST sur http://localhost:3334/messages (avec body au format JSON contenant un attribut "message") permet d'envoyer le message contenu dans la requête HTTP à RabbitMQ.
curl --request POST \
--url http://localhost:3334/messages \
--data '{"message":"Hello, World!"}'
--
Alexandre Leroux
Enseignant / Formateur
Développeur logiciel web & mobile
Nancy (Grand Est, France)