Node JS Mail планировщик - PullRequest
       5

Node JS Mail планировщик

1 голос
/ 18 марта 2019

Я работаю над приложениями Angular (веб-интерфейс) и NodeJS (API).Я хочу запланировать электронную почту на определенные даты без каких-либо внешних звонков.Я исследовал узел-расписание.Но как мне гарантировать, что он всегда будет работать в моих API-интерфейсах NodeJ?Например, где я должен поместить код - в app.js или указать маршрут?

Ответы [ 5 ]

1 голос
/ 18 марта 2019

Вы на правильном пути.Вы должны использовать сервис cron для этого.И node-schedule является хорошим выбором для этого.

Итак, сначала создайте файл с именем email-service.js.

Внутри, который поместит вашу логику.

email-service.js

var node = require('node-schedule');

var sendEmail = node.scheduleJob('0 6 * * *', function(){
   console.log('Starting..');
   init(); // write your logic here to send email
});

function init() {
  console.log('Your logic goes here.');
}

module.exports = {
    cronService: cronService
}

app.js

В файле app.js import email-service.js.

const emailService = require('email-service')

emailService.sendEmail.start(); // start service..

Вы можете назначить крона соответственно.Ниже приведен формат cron.

The cron format consists of:

*    *    *    *    *    *
┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    │
│    │    │    │    │    └ day of week (0 - 7) (0 or 7 is Sun)
│    │    │    │    └───── month (1 - 12)
│    │    │    └────────── day of month (1 - 31)
│    │    └─────────────── hour (0 - 23)
│    └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)
1 голос
/ 18 марта 2019

Похоже, что вы можете достичь с nodeCron .

Вы можете посмотреть ответ здесь тоже

Вы можете запланировать выполнение вашего планировщика в определенное время, например

var schedule = require('node-schedule');

var j = schedule.scheduleJob('42 * * * *', function(){
  console.log('The answer to life, the universe, and everything!');
});

Пример выше взят из node-cron npm page . Пожалуйста, посмотрите и их github для лучшего понимания.

0 голосов
/ 18 марта 2019

Еще одна вещь, если приложение перезапускается, тогда ваше запланированное событие отменяется. таким образом, это может быть хорошим подходом, если вы сохраните свое событие в БД и отметите его как полное или неполное. И перепланируйте свои неполные события при перезапуске приложения.

Я использую это, чтобы убедиться, что все события выполняются.

0 голосов
/ 18 марта 2019

Мы используем PM2 (https://pm2.io/runtime/)) - это менеджер процессов, который поддерживает работу вашего процесса и имеет конфигурацию, которая позволит вам запланировать выполнение задания узла в соответствии с расписанием cron. много больше, но если вы хотите улучшить работу вашего API, этот инструмент действительно хорош - и бесплатный.

0 голосов
/ 18 марта 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...