基于时间的通知服务

时间:2015-03-10 08:48:21

标签: node.js events triggers notifications webhooks

我正在处理订阅,其中用户订阅了计划并且到期

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

我希望能够在用户计划实际到期后立即收到通知。

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

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

许多服务,例如Stripe,只要用户的订阅续订/过期,就会通过webhook通知您。他们只是像我一样重复工作吗?

希望我能够清楚地表达自己的意见,也非常感谢如何将我的搜索重点放在Google上。

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

由于

1 个答案:

答案 0 :(得分:1)

我们不确定Stripe如何处理它。

我想到了两种解决方案。让我们从简单的开始:

的cronjob

正如您所提到的,您已经拥有 Cronjob 解决方案,但您可以让它每小时或每10分钟运行一次。只需确保您最大限度地优化查询,以便运行时不会超重。

它很有吸引力,易于实现,边缘情况非常少,但是一旦你达到数百万个客户端,你可能会遇到性能拖累。

计时器

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

  1. 在当天开始*(00:00)查询今天设置为过期的所有客户端,将它们保存到阵列(内存中)。按时间排序数组(最好是降序)。
  2. 创建计时器以在最后一个数组的元素时间执行。
  3. 功能:如果客户端X 现在到期,请查询数据库以确保未延长订阅。如果不是,请通知。
  4. 从跟踪的阵列中删除客户端X 。重复步骤 2
  5. 一天开始* - 也在脚本启动时运行。