我知道有几个插件可以进行异步处理。哪一个是最好的,为什么?
我知道的有:
我会将 DJ(延迟工作)添加到列表中 - http://blog.leetsoft.com/2008/2/17/delayed-job-dj
github 的人最近给了它一个很好的评价:http: //github.com/blog/197-the-new-queue
某件事是否是“最佳”解决方案实际上取决于您要解决的问题是什么。在某些情况下,最好的解决方案将是最轻量级的解决方案,而在其他情况下则是最重量级的解决方案。
BackgroundRb可能是功能最全的 Rails 后台作业处理器,但它也是最复杂的,因此需要更多投资才能掌握它。BackgroundRb 可能可以处理大多数用例,从简单到复杂。
我听说过关于 Ara T. Howard 的后台作业(Bj) 的好消息,引用自述文件是Rails 的脑死简单零管理后台优先级队列。这是一个更轻量级的解决方案,因此在大多数情况下可能比 BackgroundRb 更可取。
如果您想要的只是一个不常见的离线批处理式处理的解决方案,那么script/runner
所有 Rails 应用程序附带的解决方案就绰绰有余了。
如需进一步阅读,您可能需要查看Rails Wiki中的HowToRunBackgroundJobsInRails。
Resque 也可以帮助您。
这是一个非常好的工具,用于创建后台作业、将这些作业放置在多个队列中并稍后处理它们。
Github 的人已经创建并使用了它。
下面的文章可能会帮助您入门:
BackgrounDRb - 优点:功能齐全,消息传递,缺点:线程化(eek - Rails 不是线程安全的!),复杂
守护进程生成器- 优点:简单,运行作业,仅此而已!,缺点:没有那些花哨的消息传递的东西。
Starling + Workling 插件非常简单。此外,它使用简单、经过测试和可扩展的 Memcached。
我们使用 Cron。易于设置,易于维护,并且始终有效。
BackgroundRb 会吃掉你的大脑。
BackgrounDRb 没有线程,它完全基于进程。如果他想同时处理 IO 绑定任务,它只有一个用户可以使用的线程池功能。
尝试 1.1 版本,让我(在我的博客上)或邮件列表上知道任何问题。