在多个服务器上管理不同的resque队列

时间:2011-06-24 08:56:34

标签: ruby-on-rails ruby redis resque

我目前正在使用Resque来处理我的应用程序中的后台作业。现在我有5个不同的队列(它会变得非常快)。他们每个人都在做更新Solr索引,实时通知,预定时事通讯,延迟电子邮件和电子邮件等工作。短信。目前我正在使用Resque作为rails gem并在rails环境中运行Resque。

现在我计划将Solr索引更新任务和预定的简报移动到不同的服务器,因为这两个执行繁重的操作。一种方法是将rails目录复制到新服务器,并从rails环境运行Resque作业。但我这样做并不舒服。

另一个是为resque任务创建一个单独的rake应用程序。但问题是,这两项任务都与rails模型和rails模板密切相关。我完全不确定如何继续下去。

有没有人遇到类似问题,以及您如何构建应用程序?

1 个答案:

答案 0 :(得分:6)

我们使用rubber来配置我们的服务器并进行部署。它是Capistrano的插件,可以进行基于角色的部署。其中一个角色是“resque_worker”,任何具有该角色的计算机都将启动resque-pool以开始处理工作。

但你可以更简单地做到这一点。只需将应用程序部署到两台不同的计算机Resque旨在允许不同机器上的工作人员。只要你的第二台机器可以访问你的redis服务器,一切都会正常工作。