Introdução ao RabbitMq
RabbitMq é um corretor de mensagens que permite enviar e receber mensagens entre diferentes serviços. É um corretor de mensagens que implementa o Advanced Message Queuing Protocol (AMQP). Escrito com linguagem de programação Erlang.
RabbitMq pode ser instalado em diferentes sistemas operacionais usando seus respectivos gerenciadores de pacotes. RabbitMQ requer que Erlang/OTP seja instalado previamente, consulte a documentação oficial para obter mais informações.
sudo apt-get install rabbitmq-server
brew install rabbitmq
Uma vez instalado, podemos iniciar o servidor RabbitMq usando o seguinte comando:
sudo rabbitmq-server
Depois que o servidor for iniciado, podemos acessar o RabbitMQ de nosso aplicativo usando a porta padrão 5672.
Para habilitar o console de gerenciamento RabbitMq, podemos executar o seguinte comando:
sudo rabbitmq-plugins enable rabbitmq_management
podemos acessar o console de gerenciamento RabbitMq visitando http://localhost:15672/ em seu navegador. O nome de usuário e a senha padrão são convidados.
Para interagir com RabbitMq de NodeJs, podemos usar a biblioteca amqplib. Podemos instalar a biblioteca usando o seguinte comando:
npm install amqplib
Para conectar-se ao RabbitMq a partir de NodeJs e criar um canal para interagir com o RabbitMq, podemos usar o seguinte 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); });
Agora temos um canal para interagir com o RabbitMq. Podemos usar este canal para enviar e receber mensagens do RabbitMq. vamos nomear nossa fila como mq-test-queue e enviar uma mensagem para a fila.
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"); });
Criamos uma fila mq-test-queue e enviamos uma mensagem Hello World! para a fila. Para criar uma Queue, usamos o método assertQueue e para enviar uma mensagem para a fila, usamos o método sendToQueue.
Para receber uma mensagem da fila, podemos usar o 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()); }); });
O método consumir usa uma função de retorno de chamada e passa o objeto de mensagem para a função de retorno de chamada para acessar o conteúdo da mensagem usando msg.content.toString().
Depois de consumir a mensagem, precisamos confirmar ou não a mensagem para removê-la da fila. Podemos usar o método ack para confirmar a mensagem e o método nack para rejeitar a mensagem.
Para este exemplo, confirmaremos a mensagem após consumi-la.
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 as mensagens enviadas e recebidas com sucesso da fila. usando o console de gerenciamento RabbitMQ.
Neste artigo, aprendemos como configurar o RabbitMq e interagir com o RabbitMq do NodeJs usando a biblioteca amqplib. Criamos uma fila, enviamos uma mensagem para a fila e recebemos uma mensagem da fila.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3