File tree Expand file tree Collapse file tree 2 files changed +22
-0
lines changed Expand file tree Collapse file tree 2 files changed +22
-0
lines changed Original file line number Diff line number Diff line change @@ -54,5 +54,20 @@ def pop(non_block = false)
54
54
end
55
55
end
56
56
end
57
+
58
+ # Retrieves data from the queue head, and removes it.
59
+ #
60
+ # Blocks for +timeout+ seconds if the queue is empty, and returns nil if
61
+ # the timeout expires.
62
+ def poll ( timeout )
63
+ queue_names = @queues . map { |queue | queue . redis_name }
64
+ queue_name , payload = @redis . blpop ( *( queue_names + [ timeout ] ) )
65
+ return unless payload
66
+
67
+ synchronize do
68
+ queue = @queue_hash [ queue_name ]
69
+ [ queue , queue . decode ( payload ) ]
70
+ end
71
+ end
57
72
end
58
73
end
Original file line number Diff line number Diff line change 8
8
redis . flushall
9
9
end
10
10
11
+ it "poll times out and returns nil" do
12
+ foo = Resque ::Queue . new 'foo' , redis
13
+ bar = Resque ::Queue . new 'bar' , redis
14
+ queue = Resque ::MultiQueue . new ( [ foo , bar ] , redis )
15
+ assert_nil queue . poll ( 1 )
16
+ end
17
+
11
18
it "blocks on pop" do
12
19
foo = Resque ::Queue . new 'foo' , redis , coder
13
20
bar = Resque ::Queue . new 'bar' , redis , coder
You can’t perform that action at this time.
0 commit comments