gpt4 book ai didi

mysql - 为订阅系统设计一个作业调度程序

转载 作者:行者123 更新时间:2023-11-29 21:53:09 25 4
gpt4 key购买 nike

我必须在我的 NodeJS 项目中开发/使用调度程序来检查是否有任何订阅需要更新。作业需要每天运行一次,并检查我的数据库是否有任何用户订阅记录的“结束日期”在这一天。如果是,运行一段逻辑来更新它(我有自己的更新逻辑,它不依赖于任何外部服务,如支付提供商/网关)。

应用程序将位于云中,这意味着我的所有应用程序实例都必须是无状态的。数据库(MySQL)是系统唯一有状态的部分,更新逻辑只能运行一次。

我该怎么做?

我的订阅数据库表行如下所示:

Id: 1, User: John Doe, Plan: Monthly Premium, Start Date: 1-10-2015, End Date: 30-10-2014, status : "ACTIVE"

问题:

1.) 每天触发作业运行逻辑 - 在nodejs中使用setInterval或调度程序库轻松解决

2.) 运行一个工作进程或一段代码来检查数据库并更新它 - 每个用户订阅只需执行一次。当每日调度程序触发该进程时,许多实例可能会同时运行更新逻辑。不知道如何解决这部分问题。

最佳答案

一种可能的解决方案包括一个 shell 脚本,放入您的 crontab 中,每天都会运行。这个脚本可以做到:

  • 使用sql语句或存储过程,查找订阅所在的记录结束日期是今天
  • 对于这些记录,应用您的逻辑。 (发送电子邮件或其他任何内容)
  • 标记记录以表明某件事已完成对于该用户(并在另一个字段中输入处理日期)。

关于mysql - 为订阅系统设计一个作业调度程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33431594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com