在rails中构建电子邮件警报服务的最佳方法是什么?

时间:2014-12-11 02:26:27

标签: ruby-on-rails ruby architecture

我希望建立一个功能,当我们的网站上发布某些内容时,可以通过电子邮件通知他们。用户将提供他们的电子邮件地址,选择他们感兴趣的几个主题领域以及他们想要更新的频率(每天或每周)。

构建此类系统的最佳做法是什么?

我想我会从某种具有以下字段的订阅表(postgres)开始:

  • 电子邮件
  • subject_areas(ID列表?)
  • 频率(每日/每周)
  • last_emailed(timestamp)

我可以建立一个每晚都会对这个表运行的工作,这个工作会击中每一行并汇总所有与他们感兴趣的subject_areas相匹配的内容,生成电子邮件并将其投入第三方电子邮件服务,如Mandrill或亚马逊

这看起来是一种好方法还是有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:1)

表格可能是:

  • 用户(电子邮件,姓名)
  • 受试者
  • 订阅(user_id,subject_id,last_emailed,频率)

您想要的另一部分是后台作业排队系统(delayed_job,sidekiq或resque),您可以将这些作业放入其中。工作进程将处理作业并在另一个进程中发送它们。

Cron和BG的工作齐头并进

Cron(或调度程序)。

  1. 查找已订阅的所有用户。
  2. 对于每个用户 - 如果有新内容要发送给他们
  3. 为有新内容接收的用户加载作业
  4. 后台工作人员

    1. 对于每个user_subscriber_job - 构建基于电子邮件内容以及用户信息和订阅内容
    2. 发送电子邮件