我的用户可以保存他们的首选搜索。现在,我需要让他们订阅它们,以便在新搜索结果可用时收到电子邮件通知(如雅虎答案)。
我已经设置邮件程序,当手动触发时,工作正常。
现在我需要做的就是从预定的工作调用邮件程序但是......我真的不是该领域的专家。因此,在Whenever,Delayed_job,Sidekiq,Resque Scheduler & co。我应该选择哪一个(或者一个组合)来完成这种任务(多次邮寄的长期运行过程)?
修改
我开发了一个工作示例应用,可在Github上找到:NotiSearch。
这是非常好的记录,所以,如果你正在尝试开发类似的东西,我肯定会建议你检查一下。
PS:我选择依赖每当和 delayed_job ,因为他们没有外部依赖关系,如果需要,它应该很容易转换到更具伸缩性的解决方案。
答案 0 :(得分:2)
我亲自与Resque和Sidekiq合作过。这两者之间的主要区别在于Sidekiq为每项工作提供了新的线程。
Resque每个工作都有一个流程。这基本上意味着Resque假设失败,而其他工作如果一个进程失败则不会失败。 Sidekiq,因为它适用于线程,如果其中一个线程因任何原因锁定,整个进程将被锁定。
来自另一个质量保证Resque vs Sidekiq?
的回答Resque:
优点:
不需要线程安全(适用于任何宝石); 没有翻译偏好(你可以使用任何红宝石); 大量的插件。 缺点
每个worker运行一个进程(使用更多内存); 不会重试工作(无论如何都是开箱即用)。 Sidekiq:
赞成
每个worker运行线程(使用更少的内存); 少分叉(工作更快); 开箱即用的更多选项。 缺点
[huge]需要代码和所有依赖项的线程安全性。如果你用线程运行线程不安全的代码,你就会遇到麻烦; 更少的插件(目前只有2个); 对某些红宝石的效果比其他红宝石更好(建议使用jruby和rubinius,由于GVL(全局VM锁定),MRI的效率会降低)。
编辑
无论如何要回答你的问题。在我们使用邮件的所有项目中,我们使用Resque。