Heim > Web-Frontend > js-Tutorial > Hauptteil

Erste Schritte mit RabbitMq mit NodeJs

王林
Freigeben: 2024-09-07 15:00:37
Original
337 Leute haben es durchsucht

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 unter Verwendung der entsprechenden 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
Nach dem Login kopieren
  • Mac
brew install rabbitmq
Nach dem Login kopieren

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

sudo rabbitmq-server
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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

Nach dem Login kopieren

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

Nach dem Login kopieren

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());
  });
});
Nach dem Login kopieren

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

Nachdem wir die Nachricht verarbeitet haben, müssen wir sie bestätigen oder knacken, um sie 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);
  });
});
Nach dem Login kopieren

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 erhalten.

Das obige ist der detaillierte Inhalt vonErste Schritte mit RabbitMq mit NodeJs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!