Maison > interface Web > js tutoriel > Premiers pas avec RabbitMq à l'aide de NodeJs

Premiers pas avec RabbitMq à l'aide de NodeJs

王林
Libérer: 2024-09-07 15:00:37
original
414 Les gens l'ont consulté

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.

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
Copier après la connexion
  • Mac
brew install rabbitmq
Copier après la connexion

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

sudo rabbitmq-server
Copier après la connexion

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
Copier après la connexion

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, on peut utiliser la bibliothèque amqplib. Nous pouvons installer la bibliothèque en utilisant la commande suivante :

npm install amqplib
Copier après la connexion

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);
});

Copier après la connexion

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");
});

Copier après la connexion

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());
  });
});
Copier après la connexion

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);
  });
});
Copier après la connexion

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 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!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal