„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Erste Schritte mit RabbitMq mit NodeJs

Erste Schritte mit RabbitMq mit NodeJs

Veröffentlicht am 06.11.2024
Durchsuche:197

Einführung in RabbitMq

RabbitMq ist ein Nachrichtenbroker, der das Senden und Empfangen von Nachrichten zwischen verschiedenen Diensten ermöglicht. Es handelt sich um einen Nachrichtenbroker, der das Advanced Message Queuing Protocol (AMQP) implementiert. Geschrieben mit der Programmiersprache Erlang.

RabbitMq installieren

RabbitMq kann über die jeweiligen Paketmanager auf verschiedenen Betriebssystemen installiert werden. RabbitMQ erfordert die vorherige Installation von Erlang/OTP. Weitere Informationen finden Sie in der offiziellen Dokumentation.

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

Nach der Installation können wir den RabbitMq-Server mit dem folgenden Befehl starten:

sudo rabbitmq-server

Getting started with RabbitMq using NodeJs

Sobald der Server gestartet ist, können wir von unserer Anwendung aus über den Standardport 5672 auf Rabbitmq zugreifen.

Um die RabbitMq-Verwaltungskonsole zu aktivieren, können wir den folgenden Befehl ausführen:

sudo rabbitmq-plugins enable rabbitmq_management

Wir können auf die RabbitMq-Verwaltungskonsole zugreifen, indem wir http://localhost:15672/ in Ihrem Browser aufrufen. Der Standardbenutzername und das Passwort lauten „guest“.

Getting started with RabbitMq using NodeJs

RabbitMq mit NodeJs einrichten

Um mit RabbitMq von NodeJs aus zu interagieren, können wir die amqplib-Bibliothek verwenden. Wir können die Bibliothek mit dem folgenden Befehl installieren:

npm install amqplib

Um von NodeJs aus eine Verbindung zu RabbitMq herzustellen und einen Kanal für die Interaktion mit RabbitMq zu erstellen, können wir den folgenden Code verwenden:

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

Jetzt haben wir einen Kanal für die Interaktion mit RabbitMq. Wir können diesen Kanal verwenden, um Nachrichten von RabbitMq zu senden und zu empfangen. Benennen Sie unsere Warteschlange mq-test-queue und senden Sie eine Nachricht an die Warteschlange.

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

Wir haben eine Warteschlange mq-test-queue erstellt und eine Nachricht gesendet: Hallo Welt! in die Warteschlange. Um eine Warteschlange zu erstellen, haben wir die Methode „assertQueue“ verwendet und um eine Nachricht an die Warteschlange zu senden, haben wir die Methode „sendToQueue“ verwendet.

Um eine Nachricht aus der Warteschlange zu empfangen, können wir die Consumer-Methode verwenden.

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

Die Consumer-Methode übernimmt eine Rückruffunktion und übergibt das Nachrichtenobjekt an die Rückruffunktion, um mit msg.content.toString() auf den Nachrichteninhalt zuzugreifen.

Nachdem wir die Nachricht konsumiert haben, müssen wir die Nachricht bestätigen oder nacken, um die Nachricht aus der Warteschlange zu entfernen. Wir können die ack-Methode verwenden, um die Nachricht zu bestätigen, und die nack-Methode, um die Nachricht abzulehnen.

In diesem Beispiel bestätigen wir die Nachricht, nachdem wir sie verarbeitet haben.

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

Wir können erfolgreich gesendete und empfangene Nachrichten aus der Warteschlange sehen. mit der Rabbitmq-Verwaltungskonsole.

Abschluss

In diesem Artikel haben wir gelernt, wie man RabbitMq einrichtet und mit RabbitMq von NodeJs aus mithilfe der amqplib-Bibliothek interagiert. Wir haben eine Warteschlange erstellt, eine Nachricht an die Warteschlange gesendet und eine Nachricht von der Warteschlange empfangen.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/itsvinayak/getting-started-with-rabbitmq-using-nodejs-f17?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3