Rails简单通讯/邮件列表,通过电子邮件通知新的搜索结果
我的用户可以保存他们的首选搜索。 现在我需要给他们订阅它们的可能性,以便在新的搜索结果可用时收到电子邮件通知(如雅虎答案)。
我已经设置了一个Mailer ,当手动触发时,它正常工作。
现在我需要做的就是从预定的工作中打电话给邮件但是……我真的不是那个领域的专家。 所以,在Whenever , Delayed_job , Sidekiq , Resque Scheduler &co。 我应该选择哪一个(或一个组合)来完成这种任务(多次邮寄的长时间运行过程)?
编辑
我开发了一个工作示例应用程序 ,可在Github上找到: NotiSearch 。
它有很好的记录,所以,如果你想开发类似的东西,我肯定会建议你检查一下。
PS:我选择依赖于never和delayed_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用于管理目的。