«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Начало работы с RabbitMq с использованием NodeJs

Начало работы с RabbitMq с использованием NodeJs

Опубликовано 6 ноября 2024 г.
Просматривать:336

Введение в RabbitMq

RabbitMq — это брокер сообщений, который позволяет отправлять и получать сообщения между различными службами. Это брокер сообщений, реализующий расширенный протокол очереди сообщений (AMQP). Написано на языке программирования Erlang.

Установка RabbitMq

RabbitMq можно установить в разных операционных системах, используя соответствующие менеджеры пакетов. RabbitMQ требует, чтобы Erlang/OTP был установлен заранее, для получения дополнительной информации обратитесь к официальной документации.

  • Линукс
sudo apt-get install rabbitmq-server
  • Мак
brew install rabbitmq

После установки мы можем запустить сервер RabbitMq, используя следующую команду:

sudo rabbitmq-server

Getting started with RabbitMq using NodeJs

После запуска сервера мы можем получить доступ к RabbitMQ из нашего приложения, используя порт по умолчанию 5672.

Чтобы включить консоль управления RabbitMq, мы можем запустить следующую команду:

sudo rabbitmq-plugins enable rabbitmq_management

мы можем получить доступ к консоли управления RabbitMq, посетив http://localhost:15672/ в своем браузере. Имя пользователя и пароль по умолчанию — Guest.

Getting started with RabbitMq using NodeJs

Настройка RabbitMq с NodeJs

Для взаимодействия с RabbitMq из NodeJs мы можем использовать библиотеку amqplib. Мы можем установить библиотеку с помощью следующей команды:

npm install amqplib

Чтобы подключиться к RabbitMq из NodeJs и создать канал для взаимодействия с RabbitMq, мы можем использовать следующий код:

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

Теперь у нас есть канал для взаимодействия с RabbitMq. Мы можем использовать этот канал для отправки и получения сообщений от RabbitMq. назовем нашу очередь mq-test-queue и отправим сообщение в очередь.

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

Мы создали очередь mq-test-queue и отправили сообщение Hello World! в очередь. Чтобы создать очередь, мы использовали метод AssertQueue, а для отправки сообщения в очередь — метод sendToQueue.

Чтобы получить сообщение из очереди, мы можем использовать метод Consumer.

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

Метод Consumer принимает функцию обратного вызова и передает объект сообщения функции обратного вызова для доступа к содержимому сообщения с помощью msg.content.toString().

После использования сообщения нам нужно подтвердить или отключить сообщение, чтобы удалить его из очереди. Мы можем использовать метод ack для подтверждения сообщения и метод nack для отклонения сообщения.

В этом примере мы подтвердим сообщение после его использования.

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

Getting started with RabbitMq using NodeJs

Мы можем видеть сообщения, успешно отправленные и полученные из очереди. с помощью консоли управления RabbitMQ.

Заключение

В этой статье мы узнали, как настроить RabbitMq и взаимодействовать с RabbitMq из NodeJs с помощью библиотеки amqplib. Мы создали очередь, отправили сообщение в очередь и получили сообщение из очереди.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/itsvinayak/getting-started-with-rabbitmq-using-nodejs-f17?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3