【问题标题】:What is a correct design pattern for an API mailing/notification system?API 邮件/通知系统的正确设计模式是什么?
【发布时间】:2015-02-03 18:57:03
【问题描述】:

我正在使用 node jsmongoexpress 作为技术开发一个 Rest API。我的模型包括用户、场所等。此外,每个用户都有状态。状态示例可能是用户注册时的第一个状态是“new_user”,一周后状态必须是“first_week_user”等等。

这些状态的目的是根据用户的状态通知用户。例如,如果用户喜欢一张图片并且该用户处于第一周(他的状态为“first_week”),那么必须向他发送一封电子邮件。我现在处于设计阶段,所以我想知道以前是否有人必须面对同样的问题。

我想到的设计是在用户对象中放置一个 notification_profile 并使用 cron 作业来检查状态和当天的操作,并据此发送电子邮件/推送通知。

你怎么看?有更好的选择吗?例如我可以有一个电子邮件 API 并将到达此 API 的电子邮件排队。您知道我在哪里可以找到有关面临此问题的设计模式的信息吗?

非常感谢您的帮助。

【问题讨论】:

    标签: node.js mongodb design-patterns email


    【解决方案1】:

    没有更多细节,这听起来像您需要Observer 模式。

    基本上,您的Email 组件将订阅每个Person 对象的like(photo photo) 事件,并立即执行电子邮件发送作业,或安排该作业稍后运行,作为批处理的一部分。

    【讨论】:

      【解决方案2】:

      指定状态转换的一种方法是作为分层状态机。见http://www.eventhelix.com/realtimemantra/hierarchicalstatemachine.htm#.VNJIflXF--ohttp://en.wikipedia.org/wiki/UML_state_machine

      我没有一个好的 node.js 示例,但 here's a C# implementation 还包括定时事件的概念。本质上,状态机会跟踪NextTimedEventAt,因此您可以在正确的时间有效地将其从数据库中拉回,以触发基于时间的事件。

      动作发生在状态转换上:当你进入一个状态或离开一个状态时。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-21
        • 2020-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多