【问题标题】:Rails simple Newsletter / Mailing List with notification of new search results via emailRails 简单的时事通讯/邮件列表,通过电子邮件通知新的搜索结果
【发布时间】:2015-11-23 23:35:51
【问题描述】:

我的用户可以保存他们喜欢的搜索。现在我需要让他们订阅它们,以便在有新的搜索结果可用时(如 Yahoo 答案)接收电子邮件通知。

我已经设置了一个 Mailer,当手动触发时,它工作正常。

现在我需要做的就是通过预定的工作给邮件发件人打电话,但是……我真的不是那个领域的专家。因此,在WheneverDelayed_jobSidekiqResque Scheduler & co. 中,我应该使用哪一个(或多个组合)来完成这种任务(长期运行的过程有几个邮寄)?

编辑

我开发了一个工作示例应用,可在 Github 上找到:NotiSearch

它有很好的记录,所以如果你想开发类似的东西,我绝对建议你去看看。

PS:我选择依赖 wheneverdelayed_job 因为它们没有外部依赖项,如果需要,它应该很容易过渡到更具可扩展性的解决方案.

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 cron newsletter mailing-list


    【解决方案1】:

    我亲自与 Resque 和 Sidekiq 合作过。这两者之间的主要区别在于 Sidekiq 为每个作业生成新线程。

    Resque 每个作业都有一个进程。这基本上意味着 Resque 假设失败,如果一个进程失败,其他作业也不会失败。 Sidekiq,因为它与线程一起工作,如果其中一个线程由于某种原因被锁定,整个进程将被锁定。

    来自另一个 QA 的回答 Resque vs Sidekiq?

    回复:

    优点:

    不需要线程安全(几乎可以与任何 gem 一起使用); 没有解释器偏好(您可以使用任何 ruby​​); 大量的插件。 缺点

    每个工作人员运行一个进程(使用更多内存); 不会重试作业(无论如何,开箱即用)。 Sidekiq:

    优点

    为每个工作线程运行线程(使用更少的内存); 更少的分叉(工作更快); 开箱即用的更多选项。 缺点

    [huge] 需要您的代码和所有依赖项的线程安全。如果你用线程运行线程不安全的代码,你就是在自找麻烦; 插件少得多(目前只有 2 个); 在某些 rubies 上比其他的效果更好(推荐使用 jruby 和 rubinius,由于 GVL(全局 VM 锁定),MRI 的效率会降低)。

    编辑

    无论如何回答你的问题。在我们使用邮件的所有项目中,我们都使用 Resque。

    【讨论】:

    • 你在NotiSearch的致谢中:-)
    • 太棒了!谢谢,我去看看!
    【解决方案2】:

    试试MailyHerald - rails 的邮件管理 gem。它将允许您设置仅在满足特定条件(即新的搜索结果可用)时发送给用户的定期邮件。

    MailyHerald 在后台自动处理所有邮件(使用 Sidekiq),并提供漂亮的 web-ui 用于管理目的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-29
      • 1970-01-01
      • 2018-02-04
      • 1970-01-01
      • 1970-01-01
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多