【发布时间】:2013-07-01 13:34:48
【问题描述】:
我有一个问题,我找不到太多有用的信息。我想知道这是否可行,如果可行,如何最好地实现它。
我们正在 Rails 中构建一个应用程序,该应用程序在后台通过 DelayedJob 进行大量数据处理(……它对我们来说运行良好。)
该应用在 AWS 中运行,我们在 Capistrano 中配置了几个不同的环境。
当我们的处理负载很重时,我们的DelayedJob 队列可以备份——这基本上没问题。我确实有一个或两个队列,我希望有一个单独的节点来处理。由于它会忽略“阻塞”的队列,它会继续处理它的一两个队列并且它们会保持最新状态。例如,一些单独的工作可能需要一个多小时,而我不希望忘记密码的电子邮件发送被延迟 90 分钟,直到下一个工作人员完成任务并检查优先工作。
我想要的是拥有一个单独的 EC2 实例,该实例启动一个工作器,该工作器倾向于两个不同的显式队列。
我可以在我的开发机器上手动执行此操作,方法是使用“--QUEUES”选项启动一两个工人。
这是我的问题,如何在 capistrano 中定义一个新角色并告诉该角色的节点启动不同数量的工作人员并倾向于特定队列?同样,我正常的延迟工作角色设置为 3 个工作人员并运行所有队列。
这可能吗?有没有更好的办法?
目前在带有 PostgreSQL 9.2 和 delayed_job gem 的 Rails 3.2.13 上。
【问题讨论】:
标签: ruby-on-rails capistrano delayed-job rvm-capistrano