使用angularmeteor运行预定作业的最理想的方式

我正在写一个angularmeteor的约会安排应用程序。 其中一个要求就是将文本通知发送给预约的客户。 客户提供一个手机号码。 但基本上,我只想在预约时间前的几分钟发一封电子邮件。 运行angularmeteor云,最好的办法是什么? 所有的约会信息保存到一个mongo分贝。

您可能对Meteor 作业集合包(不是特定于angularmeteor)感兴趣:

meteor的一个持久和被动的工作队列,支持可以在任何地方运行的分布式工作人员。

job-collection是一个function强大且易于使用的Job Manager,专为Meteor.jsdevise和构build。

它解决了以下问题(以及更多):

  • 安排作业将来运行(并重复),持续跨服务器重新启动
  • […]

特别是工作job.after(someTimeBeforeAppointment)

 // Server var myJobs = JobCollection('myJobQueue'); // Start the myJobs queue running myJobs.startJobServer(); // Create a Job (eg in a Meteor method) var job = new Job(myJobs, 'jobType', jobData); // Specify when it can run and save it. job.after(someTimeBeforeAppointment).save(); // Server (or could be a different server!) // How jobs should be processed. myJobs.processJobs('jobType', function (job, done) { var jobData = job.data; // Do something… could be asynchronous. job.done(); // or job.fail(); // Call done when work on this job has finished. done(); }); 

pollInterval可以在processJobs 选项中指定。 默认是每5秒钟一次。

编写一个节点脚本,向运行X分钟和X + 10分钟之间约会的每位客户发送电子邮件。 一旦发送邮件,在mongo约会上设置一个布尔标志,所以它不会被发送两次。

运行一个每5分钟触发一次的cron。

重叠应该确保没有任何东西滑倒裂缝,并且国旗将防止倍数被发送。