【问题标题】:Node JS Mail schedulerNode JS 邮件调度器
【发布时间】:2019-08-08 10:42:18
【问题描述】:

我正在开发一个 Angular(前端)和 NodeJS(API)应用程序。我想在没有任何外部电话的情况下在特定日期安排电子邮件。我探索了节点时间表。但是我应该如何确保它在我的 NodeJs API 中永远运行呢?比如我应该把代码放在哪里——在 app.js 中还是给它一个路由?

【问题讨论】:

    标签: node.js angular


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      你在正确的轨道上。为此,您必须使用 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)
      

      【讨论】:

      • 您好,感谢您的帮助。我使用 new Date() 作为 schedulejob 的参数,并且从数据库中获取年、月和日期值。这样做会导致连续发送邮件。但是,如果我在 new Date() 中传递直接值,它会按预期工作。请帮忙。
      • 另外请解释出口
      • exports 是一个对象。因此,它将您分配给它的任何内容都公开为一个模块。
      • 我正在研究如何使其 cron 动态工作。一旦我完成它,我会在这里发布。
      • @SurjeetBhadauriya 嘿,你能看看这里吗:stackoverflow.com/questions/66987333/…。我非常需要这方面的帮助。
      【解决方案3】:

      我们使用PM2 (https://pm2.io/runtime/) - 它是一个流程管理器,可让您的流程保持运行,并具有允许您根据 cron 计划安排节点作业运行的配置。它还有很多其他功能,但如果您希望改进 API 的操作,这个工具真的很棒——而且免费。

      【讨论】:

        【解决方案4】:

        您可以使用 node-schedule 节点模块,它有据可查。

        【讨论】:

        • 请提供更多细节,也许是一个例子。 OP 会发现你的回答对你帮助不大,他已经提到他正在考虑节点调度。
        【解决方案5】:

        听起来你可以通过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 以更好地理解。

        【讨论】:

          猜你喜欢
          • 2016-10-23
          • 2020-11-08
          • 2018-12-16
          • 2016-03-08
          • 2022-01-21
          • 2020-11-30
          • 2012-06-22
          • 2019-06-02
          • 1970-01-01
          相关资源
          最近更新 更多