0

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

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

现在我需要做的就是在预定的工作中给邮件发件人打电话,但是……我真的不是那个领域的专家。所以,在任何时候,Delayed_jobSidekiqResque Scheduler & co。我应该使用哪个(或多个组合)来完成此类任务(长时间运行的过程,需要多次邮寄)?

编辑

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

它有很好的文档记录,因此,如果您正在尝试开发类似的东西,我绝对建议您检查一下。

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

4

2 回答 2

2

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

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

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

回复:

优点:

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

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

优点

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

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

编辑

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

于 2012-11-11T20:31:33.217 回答
0

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

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

于 2015-11-23T15:35:51.633 回答