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 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.
sudo apt-get install rabbitmq-server
brew install rabbitmq
Nach der Installation können wir den RabbitMq-Server mit dem folgenden Befehl starten:
sudo rabbitmq-server
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“.
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 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); }); });
Wir können erfolgreich gesendete und empfangene Nachrichten aus der Warteschlange sehen. mit der Rabbitmq-Verwaltungskonsole.
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!