我正在寻找一个具有以下能力的优秀后台作业处理器,
- 与MySql配合良好
- 可以有优先级
- 可以在后台轻松安排任何事情(不仅仅是电子邮件)
- 能够在完成后重新初始化作业(回调会很好。我很少有任务/作业在每分钟后继续运行),即使是重复的调度程序也能工作
- 不应该消耗太多的记忆,(有DJ的经验)
我正在研究的几个选项Resque、DJ、Beanstalkd(尚未完全探索)我在亚马逊EC2中有我的生产环境(如果这有助于更好的解决方案)
请建议我哪一个是好的选择,除了这些之外,还有其他东西现在人们使用吗?
我衷心推荐sidekiq——它非常灵活,使用的资源远少于Resque或DelayedJob。
它确实需要redis(像Resque一样),但redis对于任何Rails项目来说都是有价值的补充,因为它可以重用为会话存储和缓存。我们的主数据库是MySQL,我们部署到EC2:-)我们过去使用过延迟作业和救援,但发现它们有问题,并且占用了大量资源。Sidekiq使用线程,一个Sidekiq工作程序与几个DJ/Resque工作程序一样高效。以下是我可以证实的项目自述中一个有趣的部分:
您会发现您可能需要50个200MB的resque进程来固定您的CPU,而一个300MB Sidekiq进程将挂接相同的CPU和执行相同数量的工作。请参阅我在Resque上的博客文章记忆效率以及我如何缩小Carbon Five客户的将加工场从9台机器调整为1台机器。
总结一下:
- 它与MySQL配合得很好-不是很好,但与MySQL也没有问题
- 您可以通过设置不同的处理队列来确定优先级
- 你可以很容易地安排任何事情(特别是对电子邮件有特别的ala DJ支持)
- 对此不太确定,我们对重复性工作使用wheney+cron
- 你会喜欢Sidekiq的小内存足迹