2013-10-10 4 views
1

대기열 작업을 두 개의 다른 대기열간에 이동하는 방법이 있습니까?대기열간에 Resque 작업 이동

가끔 우리는 큰 대기열과 끝자리 근처에 "우선 순위를 높여야"할 필요가 있음을 알게됩니다. 우선 순위가 높은 작업을 기다리는 작업자가있는 다른 대기열로 이동하는 것이 쉬운 방법 일 수 있다고 생각했습니다.

이것은 거의 발생하지 않으며 일반적으로 고객으로부터 특별한 전화를받는 경우이므로 스케일링, 리엔지니어링이 필요하지 않습니다.

답변

0

경우에 따라 새 작업을 수동으로 짧은 대기열로 밀어 넣는 것이 좋습니다. 시스템은 작업이 이미 실행되었다는 것을 확인하고 긴 대기열에있는 작업이 최종적으로 도달 할 때 다시 처리되지 않도록 (이중 처리가 문제가되는 경우 당신).

6

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 

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