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

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

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

现在我需要做的就是从预定的工作中打电话给邮件但是……我真的不是那个领域的专家。 所以,在Whenever , Delayed_job , Sidekiq , Resque Scheduler &co。 我应该选择哪一个(或一个组合)来完成这种任务(多次邮寄的长时间运行过程)?

编辑

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

它有很好的记录,所以,如果你想开发类似的东西,我肯定会建议你检查一下。

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

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

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

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

Resque:

优点:

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

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

优点

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

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

编辑

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

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

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