Skip to content

Commit

Permalink
Support blpop in redis 3.0+.
Browse files Browse the repository at this point in the history
  • Loading branch information
imajes committed May 2, 2012
1 parent 4f1f572 commit ffe7753
Showing 1 changed file with 13 additions and 2 deletions.
15 changes: 13 additions & 2 deletions lib/resque/multi_queue.rb
Expand Up @@ -47,7 +47,12 @@ def pop(non_block = false)
else
queue_names = @queues.map {|queue| queue.redis_name }
synchronize do
value = @redis.blpop(*(queue_names + [1])) until value
if Redis::VERSION =~ /^3.0/
value = @redis.blpop(queue_names, {:timeout => 1}) until value
else
value = @redis.blpop(*(queue_names + [1])) until value
end

queue_name, payload = value
queue = @queue_hash[queue_name]
[queue, queue.decode(payload)]
Expand All @@ -61,7 +66,13 @@ def pop(non_block = false)
# the timeout expires.
def poll(timeout)
queue_names = @queues.map {|queue| queue.redis_name }
queue_name, payload = @redis.blpop(*(queue_names + [timeout]))

if Redis::VERSION =~ /^3.0/
queue_name, payload = @redis.blpop(queue_names, {:timeout => timeout})
else
queue_name, payload = @redis.blpop(*(queue_names + [timeout]))
end

return unless payload

synchronize do
Expand Down

0 comments on commit ffe7753

Please sign in to comment.