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