Вопрос проверяет понимание механизма получения сообщений из очереди RabbitMQ с помощью Listener.
Listener (слушатель) в RabbitMQ — это клиентский компонент, который подключается к очереди и ожидает поступления сообщений. Когда брокер доставляет сообщение, Listener автоматически запускает обработчик. Это основа асинхронной коммуникации в микросервисной архитектуре.
const amqp = require('amqplib');
async function startListener() {
const connection = await amqp.connect('amqp://localhost');
const channel = await connection.createChannel();
const queue = 'task_queue';
await channel.assertQueue(queue, { durable: true });
console.log('Waiting for messages...');
channel.consume(queue, (msg) => {
if (msg !== null) {
console.log('Received:', msg.content.toString());
// Обработка сообщения
channel.ack(msg); // Подтверждение
}
});
}
startListener();Listener может работать в режиме auto-ack (автоматическое подтверждение) или manual-ack (ручное). В production обычно используют manual-ack, чтобы гарантировать, что сообщение не потеряется при сбое. Если обработчик упал, сообщение возвращается в очередь.
Listener в RabbitMQ — это ключевой элемент для построения надёжных асинхронных систем. Он позволяет обрабатывать задачи по мере поступления, масштабировать потребителей и обеспечивать отказоустойчивость. Применяется в микросервисах, фоновых задачах, обработке событий и интеграции между сервисами.