在队列之间移动Resque作业

Hor*_*ude 2 ruby-on-rails resque

无论如何在两个不同的队列之间移动resque工作?

我们有时会遇到这样的情况:我们有一个很大的队列和一个接近尾声的工作我们发现需要"提高其优先级".我们认为这可能是一种简单的方法,可以简单地将其移动到另一个让工人等待任何高优先级工作的队列.

这种情况很少发生,通常情况下我们会收到客户的特殊电话,因此缩放,重新设计似乎并非完全必要.

raf*_*fb3 8

Resque中没有任何内置功能.您可以使用rpoplpush:

module Resque
  def self.move_queue(source, destination)
    r = Resque.redis
    r.llen("queue:#{source}").times do
      r.rpoplpush("queue:#{source}", "queue:#{destination}")
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

https://gist.github.com/rafaelbandeira3/7088498