Introduction à RabbitMq
RabbitMq est un courtier de messages qui permet d'envoyer et de recevoir des messages entre différents services. Il s'agit d'un courtier de messages qui implémente le protocole AMQP (Advanced Message Queuing Protocol). Écrit avec le langage de programmation Erlang.
RabbitMq peut être installé sur différents systèmes d'exploitation à l'aide de leurs gestionnaires de packages respectifs. RabbitMQ nécessite qu'Erlang/OTP soit installé au préalable, veuillez vous référer à la documentation officielle pour plus d'informations.
sudo apt-get install rabbitmq-server
brew install rabbitmq
Une fois installé, nous pouvons démarrer le serveur RabbitMq en utilisant la commande suivante :
sudo rabbitmq-server
Une fois le serveur démarré, nous pouvons accéder à Rabbitmq depuis notre application en utilisant le port par défaut 5672.
Pour activer la console de gestion RabbitMq, nous pouvons exécuter la commande suivante :
sudo rabbitmq-plugins enable rabbitmq_management
nous pouvons accéder à la console de gestion RabbitMq en visitant http://localhost:15672/ dans votre navigateur. Le nom d'utilisateur et le mot de passe par défaut sont invités.
Pour interagir avec RabbitMq depuis NodeJs, on peut utiliser la bibliothèque amqplib. Nous pouvons installer la bibliothèque en utilisant la commande suivante :
npm install amqplib
Pour se connecter à RabbitMq depuis NodeJs et créer un canal pour interagir avec RabbitMq, nous pouvons utiliser le code suivant :
const amqp = require("amqplib"); const connect = async (url) => { const connection = await amqp.connect(url); const channel = await connection.createChannel(); return channel; }; connect("amqp://localhost:5672").then((channel) => { console.log("Connected to RabbitMQ"); channel.close(); process.exit(0); });
Maintenant, nous avons un canal pour interagir avec RabbitMq. Nous pouvons utiliser ce canal pour envoyer et recevoir des messages de RabbitMq. Nommons notre file d'attente mq-test-queue et envoyons un message à la file d'attente.
connect("amqp://localhost:5672").then((channel) => { console.log("Connected to RabbitMQ"); channel.assertQueue("mq-test-queue"); console.log("Queue created"); channel.sendToQueue("mq-test-queue", Buffer.from("Hello World!")); console.log("Message sent"); });
Nous avons créé une file d'attente mq-test-queue et envoyé un message Hello World ! à la file d'attente. Pour créer une file d'attente, nous avons utilisé la méthode assertQueue et pour envoyer un message à la file d'attente, nous avons utilisé la méthode sendToQueue.
Pour recevoir un message de la file d'attente, nous pouvons utiliser la méthode consume.
connect("amqp://localhost:5672").then((channel) => { console.log("Connected to RabbitMQ"); channel.assertQueue("mq-test-queue"); console.log("Queue created"); channel.sendToQueue("mq-test-queue", Buffer.from("Hello World!")); console.log("Message sent"); channel.consume("mq-test-queue", (msg) => { console.log("Message received", msg.content.toString()); }); });
La méthode consume prend une fonction de rappel et transmet l'objet message à la fonction de rappel pour accéder au contenu du message à l'aide de msg.content.toString().
Après avoir consommé le message, nous devons accuser réception ou supprimer le message pour le supprimer de la file d'attente. Nous pouvons utiliser la méthode ack pour accuser réception du message et la méthode nack pour rejeter le message.
Pour cet exemple, nous accuserons réception du message après avoir consommé le message.
const amqp = require("amqplib"); const connect = async (url) => { const connection = await amqp.connect(url); const channel = await connection.createChannel(); return channel; }; connect("amqp://localhost:5672").then((channel) => { console.log("Connected to RabbitMQ"); channel.assertQueue("mq-test-queue"); console.log("Queue created"); channel.sendToQueue("mq-test-queue", Buffer.from("Hello World!")); console.log("Message sent"); channel.consume("mq-test-queue", (msg) => { console.log("Message received", msg.content.toString()); channel.ack(msg); }); });
Nous pouvons voir les messages envoyés et reçus avec succès depuis la file d'attente. en utilisant la console de gestion Rabbitmq.
Dans cet article, nous avons appris comment configurer RabbitMq et interagir avec RabbitMq depuis NodeJs à l'aide de la bibliothèque amqplib. Nous avons créé une file d'attente, envoyé un message à la file d'attente et reçu un message de la file d'attente.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!