Introducción a RabbitMq
RabbitMq es un intermediario de mensajes que permite enviar y recibir mensajes entre diferentes servicios. Es un intermediario de mensajes que implementa el protocolo avanzado de cola de mensajes (AMQP). Escrito con el lenguaje de programación Erlang.
RabbitMq se puede instalar en diferentes sistemas operativos utilizando sus respectivos administradores de paquetes. RabbitMQ requiere que Erlang/OTP esté instalado de antemano; consulte la documentación oficial para obtener más información.
sudo apt-get install rabbitmq-server
brew install rabbitmq
Una vez instalado, podemos iniciar el servidor RabbitMq usando el siguiente comando:
sudo rabbitmq-server
Una vez iniciado el servidor, podemos acceder a Rabbitmq desde nuestra aplicación utilizando el puerto predeterminado 5672.
Para habilitar la consola de administración de RabbitMq, podemos ejecutar el siguiente comando:
sudo rabbitmq-plugins enable rabbitmq_management
podemos acceder a la consola de administración de RabbitMq visitando http://localhost:15672/ en su navegador. El nombre de usuario y la contraseña predeterminados son invitado.
Para interactuar con RabbitMq desde NodeJs, podemos usar la biblioteca amqplib. Podemos instalar la biblioteca usando el siguiente comando:
npm install amqplib
Para conectarnos a RabbitMq desde NodeJs y crear un canal para interactuar con RabbitMq, podemos usar el siguiente código:
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); });
Ahora tenemos un canal para interactuar con RabbitMq. Podemos utilizar este canal para enviar y recibir mensajes de RabbitMq. nombremos nuestra cola mq-test-queue y enviemos un mensaje a la cola.
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"); });
Hemos creado una cola mq-test-queue y enviamos un mensaje ¡Hola mundo! a la cola. Para crear una Cola, hemos usado el método afirmarQueue y para enviar un mensaje a la cola, hemos usado el método sendToQueue.
Para recibir un mensaje de la cola, podemos usar el método consumir.
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()); }); });
El método de consumo toma una función de devolución de llamada y pasa el objeto de mensaje a la función de devolución de llamada para acceder al contenido del mensaje usando msg.content.toString().
Después de consumir el mensaje, debemos confirmarlo o eliminarlo para eliminarlo de la cola. Podemos usar el método ack para reconocer el mensaje y el método nack para rechazar el mensaje.
Para este ejemplo, acusaremos el mensaje después de consumirlo.
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); }); });
Podemos ver los mensajes enviados y recibidos exitosamente desde la cola. usando la consola de administración de Rabbitmq.
En este artículo, hemos aprendido cómo configurar RabbitMq e interactuar con RabbitMq desde NodeJs usando la biblioteca amqplib. Creamos una cola, enviamos un mensaje a la cola y recibimos un mensaje de la cola.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3