Каким образом можно создать систему уведомлений в планировщике задач?
Добрый день.
Задача подробно: существует планировщик задач на node.js + mongoDB. К ним подвязан телеграм, через который на данный момент можно добавлять задачи. Необходим добавочный функционал в виде уведомлений в чатик с ботом.
Вопрос таков: каким образом можно отследить, что пришло время кинуть уведомление. Пытался на каждое событие подвязать интервал. Однако при большом количестве задач бот падает. Пытался при добавлении события делать сортировку по времени и запоминать время ближайшего. Здесь проблема в производительности.
Кто сталкивался? Можете предложить адекватный алгоритм решения этой задачи?
Андрей Хохлов: В принципе, можно попытаться. Более чем адекватный вариант. Если делать условие выборки по времени. Один запрос в минуту - действительно, нагрузки не будет. Спасибо.
Не знаю, как сам не догадался.
По моему у вас подход в корне не верный.
1) При добавлении нового события вычисляете его время срабатывания. Делаете массив событий. Раз в какое-то время обходите список и если время их выполнения прошло, то выполняете и удаляете.
2) В JS есть Event Loop и если вы ставите таймаут в 5 секунд, то это не значит что оно выполнится точно через 5. Функции тоже имеют время выполнения.