"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Premiers pas avec RabbitMq à l'aide de NodeJs

Premiers pas avec RabbitMq à l'aide de NodeJs

Publié le 2024-11-06
Parcourir:838

Présentation de 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.

Installation de RabbitMq

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.

  • Linux
sudo apt-get install rabbitmq-server
  • Mac
brew install rabbitmq

Une fois installé, nous pouvons démarrer le serveur RabbitMq en utilisant la commande suivante :

sudo rabbitmq-server

Getting started with RabbitMq using NodeJs

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.

Getting started with RabbitMq using NodeJs

Configurer RabbitMq avec NodeJs

Pour interagir avec RabbitMq depuis NodeJs, nous pouvons 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 de 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);
  });
});

Getting started with RabbitMq using NodeJs

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.

Conclusion

Dans cet article, nous avons appris comment configurer RabbitMq et interagir avec RabbitMq à partir de 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.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/itsvinayak/getting-started-with-rabbitmq-using-nodejs-f17?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3