Как правильно организовать выполнение задач по расписанию в Node.JS?
Здравствуйте.
Есть проект на MEAN стеке.
Необходимо организовать систему уведомлений по расписанию, отправку уведомлений для определенных пользователей. Проблема в том, что задачи нужно выполнять в определенное время, но не каждый день, а раз в N дней, число N хранится в базе.
Нашел готовые решения в виде node-schedule, для самих уведомлений, но не нашел примерного решения по моей задаче(с возможностью конфигурирования в какие дни запускать).
Самое примитивное решение, которое придумал - есть node schedule, который, допустим запускается раз в сутки в 00:00. Он читает из базы последнюю дату запуска и пропуск(через сколько дней нужно запускать). Если разница в днях = записанная, то он запускается, отправляет уведомления пользователям, а потом перезаписывает дату последнего запуска.
Что думаете по поводу такого решения?
Вопрос. Возможно, кто-то стыкался с подобным решением. Как правильно реализовать такой запуск?
Вопрос2. Стоит ли лепить запуск по расписанию в "основном" бекенде, или стоит сделать отдельный микросервис на той же ноде, который будет по расписанию "дергать" роут основного бекенда и рассылать уведомления?
Вопрос. Возможно, кто-то стыкался с подобным решением. Как правильно реализовать такой запуск?
Вы предложили вполне хорошее решение, если у вас уже есть mongo, то можно воспользоваться agenda модулем вместо node-schedule, в придачу получите распределенный job processing.
Вопрос2. Стоит ли лепить запуск по расписанию в "основном" бекенде, или стоит сделать отдельный микросервис на той же ноде, который будет по расписанию "дергать" роут основного бекенда и рассылать уведомления?