Для создания глобальной очереди выполнения функций на Node.js с использованием Express.js и MongoDB я бы рекомендовал использовать библиотеку под названием "Bull". Bull предоставляет высокоуровневый интерфейс для работы с очередями задач в Node.js.
Первым шагом будет установка и настройка Bull. Для этого выполните следующую команду в вашем проекте:
npm install bull --save
Теперь, чтобы создать глобальную очередь выполнения функций, вам потребуется настроить экземпляр Bull в вашем Express.js приложении. Вы можете сделать это в файле, например, с именем "queue.js".
const Queue = require('bull'); // Создаем экземпляр очереди const queue = new Queue('myQueue', { redis: process.env.REDIS_URL // Подключение к локальному или удаленному Redis-серверу }); // Обработчик для выполнения задач в очереди queue.process(async (job) => { // Ваша функция, которую необходимо выполнить await myFunction(job.data); }); // Обработчик для обработки ошибок queue.on('failed', (job, error) => { console.log(`Job ${job.id} failed: ${error}`); }); module.exports = queue;
В этом файле мы создаем экземпляр очереди с именем "myQueue" и указываем подключение к Redis-серверу (который используется Bull для сохранения состояния очереди). Затем мы определяем обработчик с помощью queue.process
. Этот обработчик будет вызываться для каждой задачи в очереди. Внутри обработчика вы можете вызвать свою функцию, которую необходимо выполнить.
Теперь вы можете использовать глобальную очередь выполнения функций в вашем Express.js маршруте, чтобы добавить задачу в очередь:
const express = require('express'); const router = express.Router(); const queue = require('./queue'); router.post('/my-route', async (req, res) => { const data = req.body; // Добавляем задачу в очередь await queue.add(data); res.send('Задача добавлена в очередь'); }); module.exports = router;
В этом примере используется Express.js маршрутизатор для создания эндпоинта POST /my-route
. Когда эндпоинт вызывается, мы добавляем задачу в очередь, используя queue.add
. Вы можете передать любые данные в задачу через аргумент data
, который будет передан в обработчик обработки задачи.
Наконец, вам также потребуется настроить программу для запуска обработчика очереди в фоновом режиме. Bull предоставляет CLI-интерфейс для этой цели. Вы можете выполнить следующую команду в вашем проекте, чтобы запустить обработчик:
./node_modules/.bin/bull
Замените ./node_modules/.bin/bull
на путь к исполняемому файлу Bull CLI, если у вас есть другие способы запуска CLI.
Таким образом, вы создали глобальную очередь выполнения функций на Node.js с помощью Express.js и MongoDB, используя библиотеку Bull. Вы добавили задачи в очередь в роутере Express.js и настроили обработчик очереди функций, которые будут выполняться по мере постановки задачи в очередь.