Sobes.tech
Назад к вопросам
Junior — Middle
57

Какую роль выполнял RabbitMQ в вашем предыдущем проекте и для каких задач применяли этот инструмент?

Компании, где спрашивали
ТОП КЕЙС

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

RabbitMQ использовали как брокер сообщений для развязки сервисов и передачи задач асинхронно. Через него выносили долгие операции из синхронного запроса, чтобы не держать пользователя в ожидании. Также его применяли для надежной доставки событий между компонентами системы.

Определение:

RabbitMQ — это message broker, который принимает сообщения от одних приложений и доставляет их другим по заданным правилам. Он помогает строить асинхронную архитектуру, снижать связность между сервисами и сглаживать пики нагрузки. Обычно его используют, когда одному компоненту нужно быстро передать задачу другому, не ожидая немедленного ответа.

Пример использования:

В проекте RabbitMQ можно было использовать для обработки заказов: после оформления заказа сервис сохраняет его в БД и публикует сообщение в очередь, а отдельный consumer обрабатывает оплату, отправку email и интеграцию с внешними системами.

// Отправка сообщения
var factory = new ConnectionFactory { HostName = "localhost" };
using var connection = factory.CreateConnection();
using var channel = connection.CreateModel();

channel.QueueDeclare(queue: "orders", durable: true, exclusive: false, autoDelete: false);

var body = Encoding.UTF8.GetBytes("OrderCreated:12345");
channel.BasicPublish(exchange: "", routingKey: "orders", basicProperties: null, body: body);

// Получение сообщения
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (_, ea) =>
{
    var message = Encoding.UTF8.GetString(ea.Body.ToArray());
    Console.WriteLine(message);
};

channel.BasicConsume(queue: "orders", autoAck: true, consumer: consumer);

Пояснение кода:

Сначала создается подключение к RabbitMQ и канал для работы с очередью. Затем объявляется очередь orders, чтобы она существовала и была доступна для публикации сообщений. После этого отправляется сообщение OrderCreated:12345, а consumer подписывается на очередь и получает это сообщение для дальнейшей обработки.

Ключевые моменты:

  • RabbitMQ использовали для асинхронной обработки задач и снижения связности между сервисами.
  • Он хорошо подходит для очередей, фоновых задач, интеграций и событийной передачи данных.
  • Основная ценность — надежная доставка и возможность переживать временную недоступность потребителя.
  • Важно отдельно упоминать producer, queue и consumer, чтобы показать понимание схемы работы.
  • Для собеседования полезно отметить, что RabbitMQ помогает не блокировать пользовательский запрос долгими операциями.