对于我的项目,在rails2和3中,我对collectiveidea /
delayed_job感到非常满意。我不知道豆荚缠豆,但我会尽快尝试:-)。我遵循了resque文档中的建议。我会报告。
Resque vs DelayedJob
Resque与DelayedJob相比如何?为什么选择一个而不是另一个?
- Resque支持多个队列
- DelayedJob支持更细粒度的优先级
- Resque工作者可以抵抗内存泄漏/膨胀
- DelayedJob工人非常简单,易于修改
- Resque需要Redis
- DelayedJob需要ActiveRecord
- Resque只能将JSonable Ruby对象作为参数放在队列中
- DelayedJob可以将任何Ruby对象作为参数放在其队列中
- Resque包含一个Sinatra应用程序,用于监视发生的情况
- 如果要添加界面,可以从Rails应用程序中查询DelayedJob
如果要进行Rails开发,则已经有一个数据库和ActiveRecord。DelayedJob超级容易设置,效果很好。GitHub用了几个月的时间来处理近2亿个工作。
如果满足以下条件,则选择“重新排序”
- 您需要多个队列
- 你不在乎/不喜欢数字优先级
- 您不需要持久化每个Ruby对象
- 您的队列可能很大
- 你想看看发生了什么
- 您期望很多失败/混乱
- 您可以设置Redis
- 您在RAM上没有不足
如果满足以下条件,则选择DelayedJob:
- 您喜欢数字优先级
- 您每天都不会做大量的工作
- 您的队列很小且很灵活
- 没有太多的失败/混乱
- 您想轻松地将任何东西扔到队列中
- 您不想设置Redis
如果满足以下条件,则选择Beanstalkd:
- 您喜欢数字优先级
- 您想要极快的排队
- 你不想浪费你的RAM
- 您想提供大量工作
- 您可以将队列中的JSonable Ruby对象用作参数
- 您需要多个队列
Resque绝不是“更好”的DelayedJob,因此请确保选择最适合您的应用程序的工具。
一个漂亮的排队后端速度的对比:
enqueue work-------------------------------------------------delayed job | 200 jobs/sec 120 jobs/secresque | 3800 jobs/sec 300 jobs/secrabbitmq | 2500 jobs/sec 1300 jobs/secbeanstalk | 9000 jobs/sec 5200 jobs/sec
祝你今天愉快!
PS有一个关于RailsCast
resque,延迟工作(修订版)和Beanstakld。看一看!
PPS我最喜欢的选择是Sidekiq(非常简单,快速且高效,适合简单工作),请查看此页面进行比较。



