@vostotskiy

Как правильно организовать выполнение задач по расписанию в Node.JS?

Здравствуйте.
Есть проект на MEAN стеке.

Необходимо организовать систему уведомлений по расписанию, отправку уведомлений для определенных пользователей. Проблема в том, что задачи нужно выполнять в определенное время, но не каждый день, а раз в N дней, число N хранится в базе.

Нашел готовые решения в виде node-schedule, для самих уведомлений, но не нашел примерного решения по моей задаче(с возможностью конфигурирования в какие дни запускать).

Самое примитивное решение, которое придумал - есть node schedule, который, допустим запускается раз в сутки в 00:00. Он читает из базы последнюю дату запуска и пропуск(через сколько дней нужно запускать). Если разница в днях = записанная, то он запускается, отправляет уведомления пользователям, а потом перезаписывает дату последнего запуска.
Что думаете по поводу такого решения?

Вопрос. Возможно, кто-то стыкался с подобным решением. Как правильно реализовать такой запуск?

Вопрос2. Стоит ли лепить запуск по расписанию в "основном" бекенде, или стоит сделать отдельный микросервис на той же ноде, который будет по расписанию "дергать" роут основного бекенда и рассылать уведомления?

Заранее спасибо
  • Вопрос задан
  • 991 просмотр
Пригласить эксперта
Ответы на вопрос 1
@qq1
Вопрос. Возможно, кто-то стыкался с подобным решением. Как правильно реализовать такой запуск?

Вы предложили вполне хорошее решение, если у вас уже есть mongo, то можно воспользоваться agenda модулем вместо node-schedule, в придачу получите распределенный job processing.
Вопрос2. Стоит ли лепить запуск по расписанию в "основном" бекенде, или стоит сделать отдельный микросервис на той же ноде, который будет по расписанию "дергать" роут основного бекенда и рассылать уведомления?

Лучше выделить в отдельный процесс
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
24 апр. 2024, в 16:19
4000 руб./за проект
24 апр. 2024, в 15:34
20000 руб./за проект
24 апр. 2024, в 15:32
130000 руб./за проект