Resque:每个队列一个工作者

Hen*_*bon 7 ruby resque ruby-on-rails-3 ruby-1.9.2

我目前有一个Rails 3.0项目,Ruby 1.9.2和Resque.

我的应用程序有多个工作类和多个队列,它们是动态创建的(在运行时).此外,还有多个工作人员可以在任何队列上自由工作,因为在开始时没有任何现有队列,并且无法预测:

$ COUNT=3 QUEUE=* rake resque:workers
Run Code Online (Sandbox Code Playgroud)

根据projectid 创建的队列:

@queue = "project_#{project.id}".to_sym
Run Code Online (Sandbox Code Playgroud)

对于给定的队列,他们的工作必须按顺序处理,一次处理一个.我的问题是,通过拥有多个工作人员,可以并行处理多个工作.

有没有办法设置每个队列的最大工作数(为1)?有没有办法在作业处理时锁定队列?

谢谢!

lac*_*cco 2

我终于找到了一个非常简单的解决方案,使用 resque-retry 和存储在 redis 中的锁(我是为用户这样做,只是为项目这样做): https: //stackoverflow.com/a/10933666/745266