Очереди сообщений для отказоустойчивости
RabbitMQ — это высокопроизводительный брокер сообщений (Message Broker), работающий по протоколу AMQP. Он служит буфером между веб-сервером и фоновыми обработчиками (воркерами). При DDoS-атаках на ресурсоемкие операции (например, оформление заказа или регистрация) RabbitMQ позволяет моментально принять запрос от пользователя, поместить его в очередь и обработать асинхронно по мере освобождения ресурсов базы данных, предотвращая падение бэкенда.
// Пример публикации сообщения в очередь RabbitMQ на Node.js
import amqp from 'amqplib';
async function publishOrder(orderData) {
const connection = await amqp.connect('amqp://localhost');
const channel = await connection.createChannel();
const queue = 'orders_queue';
await channel.assertQueue(queue, { durable: true });
channel.sendToQueue(queue, Buffer.from(JSON.stringify(orderData)), {
persistent: true
});
console.log("Order buffered successfully!");
await channel.close();
await connection.close();
}