基于时间的通知服务

我正在处理用户订阅计划并且到期的订阅。

所以基本上每个用户商店都有一个expiration字段。

我希望能够在用户计划一过期就能得到通知

现在,我有一个工作,每天运行一次所有用户,并检查是否有人过期,但理想情况下,我希望得到一个服务器回发或某种事件,每当用户过期而不运行这一天。

你能想到任何处理这些事情的第三方服务/数据库/其他工具吗?

很多服务,例如Stripe,当用户的订阅被更新/过期时,都会通过webhook通知您。 他们只是像我一样反复地工作?

希望我已经说清楚了,希望能帮助我把search引向Google。

我目前的堆栈是Mongodb,Node.js,AWS

谢谢

我们不知道,如何条纹处理它。

我有两个解决scheme。 让我们从简单的开始:

的cronjob

正如你所提到的,你已经有了一个Cronjob解决scheme,但是你可以让它每小时运行一次,或者每10分钟运行一次。 只要确保优化您的查询到最大限度,以便它不是超重的运行。

这是有吸引力的,容易实现,很less有边缘情况,但正如你可能有,虽然可以是性能拖累一旦你达到数百万的客户端。

计时器

实现varries,你需要担心边缘情况,但是这个概念:

  1. 在当天开始*(00:00)查询今天设置为过期的所有客户,将它们保存到数组(内存中)中。 按时间对数组进行sorting(最好是降序)。
  2. 创build定时器在最后一个数组的元素时间执行。
  3. function:如果客户端X现在到期,查询数据库以确保订阅未被扩展。 通知如果不是。
  4. 从被跟踪的数组中移除客户端X. 重复步骤2

在一天开始* – 也运行脚本启动。