这是我的需求:

  • enqueue_in(10.hours,...)(DJ语法是完美的。)
  • 同时增加工人。 (Resque或Beanstalkd对此有好处,但不是DJ)
  • 必须每秒处理100个工作的推动和弹出。 (我需要进行测试以确保,但我认为DJ无法处理很多工作)

Resque和Beanstalkd不做Enqueue_in。

有一个插件(resque_scheduler)可以做到,但是我不确定它的稳定性。

我们的环境是在亚马逊上,他们为拥有亚马逊实例的人免费推出了beanstalkd,这对我们来说是一个加号,但是我仍然不确定这里最好的选择是什么。

我们运行Rails 2.3,但我们将其速度加速到Rails 3.0.3。

但是,我最好的选择是什么?我是否想念另一个做得更好的宝石?

我觉得我唯一实际工作的选择是Resque_scheduler。

编辑:

sidekiq(https://github.com/mperham/sidekiq)是您应该检查的另一个选择。

有帮助吗?

解决方案

对于我的项目,我会感到非常舒适 CollectiveIdea/delayed_job 在Rails2和3中。我不知道Beanstalkd,但是我会尽快尝试:-)。我遵循了Resque文档中的建议。我会报告。

Resque vs DelayedJob

Resque与DelayDjob相比如何,为什么要选择另一个?

  • Resque支持多个队列
  • 延迟job支持更精细的优先级
  • Resque工人对内存泄漏 /膨胀有弹性
  • 延迟的工人非常简单易用
  • 雷克需要重新供应
  • 延迟job需要activerecord
  • Resque只能将可jsonable Ruby对象作为参数排列在队列上
  • delaydjob可以将任何红宝石对象作为参数放在队列上
  • Resque包括一个用于监视发生的事情的Sinatra应用程序
  • 如果要添加一个接口

如果您正在进行Rails开发,那么您已经有一个数据库和ActivereCord。 delaydjob非常容易设置,并且运行良好。 Github使用了数月的时间来处理近2亿个工作岗位。

如果:

  • 您需要多个队列
  • 您不在乎 /不喜欢数字优先事项
  • 您不需要坚持每个红宝石对象
  • 你有可能大型队列
  • 你想看看发生了什么
  • 您期望很多失败 /混乱
  • 您可以设置Redis
  • 您没有在RAM上跑步

选择delayedjob如果:

  • 您喜欢数字优先级
  • 您每天没有做大量的工作
  • 你的队列保持小而敏捷
  • 没有很多失败 /混乱
  • 您想轻松地将任何东西扔到队列上
  • 您不想设置Redis

如果:

  • 您喜欢数字优先级
  • 您想要非常快的队列
  • 你不想浪费你的公羊
  • 您想服务大量的工作
  • 作为参数
  • 您需要多个队列

绝不是Resque“更好”的延迟job,因此请确保您选择最适合应用程序的工具。

一个不错的 排队后端速度的比较:

                 enqueue                work
-------------------------------------------------
delayed job |   200 jobs/sec     120 jobs/sec
resque      |  3800 jobs/sec     300 jobs/sec
rabbitmq    |  2500 jobs/sec    1300 jobs/sec
beanstalk   |  9000 jobs/sec    5200 jobs/sec

祝你今天过得愉快!

PS有一个关于 雷克斯, 延迟工作 (经过修改的版本) 和 Beanstakld. 。看一看!

PPS我最喜欢的选择是 Sidekiq (非常简单,快速和高效,用于简单的工作),看看 这一页 进行比较。

其他提示

Amazon Beanstalk不是Beanstalkd。

Beanstalkd-队列确实有延迟的作业,直到给定的秒数通过之前,这不会从队列中保留。如果那是什么 Enqueue_in(10.hours, ... ) 手段,然后只是句法糖来计算秒数,而直到那时才能提供一份工作。

只是一个小笔记: delayed_job 3.0+ 支持队列

object.delay(:queue => 'tracking').method    
Delayed::Job.enqueue job, :queue => 'tracking'    
handle_asynchronously :tweet_later, :queue => 'tweets'
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top