Rails简单通讯/邮件列表,通过电子邮件通知新的搜索结果

时间:2012-11-09 18:02:38

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

我的用户可以保存他们的首选搜索。现在,我需要让他们订阅它们,以便在新搜索结果可用时收到电子邮件通知(如雅虎答案)。

我已经设置邮件程序,当手动触发时,工作正常。

现在我需要做的就是从预定的工作调用邮件程序但是......我真的不是该领域的专家。因此,在WheneverDelayed_jobSidekiqResque Scheduler & co。我应该选择哪一个(或者一个组合)来完成这种任务(多次邮寄的长期运行过程)?

修改

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

这是非常好的记录,所以,如果你正在尝试开发类似的东西,我肯定会建议你检查一下。

PS:我选择依赖每当 delayed_job ,因为他们没有外部依赖关系,如果需要,它应该很容易转换到更具伸缩性的解决方案。

1 个答案:

答案 0 :(得分:2)

我亲自与Resque和Sidekiq合作过。这两者之间的主要区别在于Sidekiq为每项工作提供了新的线程。

Resque每个工作都有一个流程。这基本上意味着Resque假设失败,而其他工作如果一个进程失败则不会失败。 Sidekiq,因为它适用于线程,如果其中一个线程因任何原因锁定,整个进程将被锁定。

来自另一个质量保证Resque vs Sidekiq?

的回答

Resque:

优点:

不需要线程安全(适用于任何宝石); 没有翻译偏好(你可以使用任何红宝石); 大量的插件。 缺点

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

赞成

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

[huge]需要代码和所有依赖项的线程安全性。如果你用线程运行线程不安全的代码,你就会遇到麻烦; 更少的插件(目前只有2个); 对某些红宝石的效果比其他红宝石更好(建议使用jruby和rubinius,由于GVL(全局VM锁定),MRI的效率会降低)。

编辑

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