节点JS邮件调度程序

时间:2019-03-18 05:28:01

标签: node.js angular

我正在开发Angular(前端)和NodeJS(API)应用程序。我想在特定日期安排电子邮件,而无需任何外部呼叫。我探讨了节点计划。但是,我应该如何确保它在NodeJs API中永久运行?就像我应该将代码放在哪里-放在app.js或给它路由?

5 个答案:

答案 0 :(得分:1)

听起来像nodeCron所能实现的。

您也可以看看答案here

您可以调整计划程序以在

之类的特定时间执行
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,以便更好地理解。

答案 1 :(得分:1)

您处在正确的轨道上。您必须为此使用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中,导入email-service.js

const emailService = require('email-service')

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

您可以相应地安排cron。下面是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)

答案 2 :(得分:0)

您可以使用节点计划节点模块,它有据可查。

答案 3 :(得分:0)

我们使用PM2https://pm2.io/runtime/)-这是一个流程管理器,它可以使您的流程保持运行并进行配置,以使您可以安排节点作业根据cron计划运行。还有很多其他功能,但是如果您想改善API的操作,那么此工具确实不错-免费。

答案 4 :(得分:0)

还有一件事,如果应用程序重新启动,则您的计划事件将被取消。因此,如果您将事件保存在数据库中并标记为已完成或未完成,那么这可能是一个好方法。并在应用程序重新启动时重新安排您的未完成事件。

我用它来确保所有事件都在运行。