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 ü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.
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 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); }); });
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 empfangen.
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