我必须在NodeJS项目中开发/使用调度程序来检查是否需要续订任何订阅。作业需要每天运行一次并检查我的数据库,如果当天有任何用户订阅记录的“enddate”。如果是,运行一个逻辑来更新它(我有自己的更新逻辑,不依赖于任何外部服务,如支付提供商/网关)。
应用程序将在云中,这意味着我的所有应用程序实例都必须是无状态的。数据库(MySQL)是系统中唯一的有状态部分,Renew逻辑只能运行一次。
我该怎么做?
订阅的我的数据库表行如下所示:
Id: 1, User: John Doe, Plan: Monthly Premium, Start Date: 1-10-2015, End Date: 30-10-2014, status : "ACTIVE"
问题:
1。)每天触发作业运行逻辑 - 使用setInterval或调度程序库在nodejs中轻松解决
2。)运行一个工作人员或一段代码来检查数据库并更新它 - 每个用户订阅只需要发生一次。当每日调度程序触发进程时,许多实例可能同时运行更新逻辑。不知道如何解决这部分问题。
答案 0 :(得分:0)
一种可能的解决方案包括一个shell脚本,放在你的crontab中,每天运行一次。 这个脚本可以:
答案 1 :(得分:0)
答案 2 :(得分:0)
您可以使用Agenda,但它需要MongoDb来维持其状态。如果您可以添加一个DB,那么您可以尝试一下。