Class: Metacrunch::Redis::QueueSource

Inherits:
Object
  • Object
show all
Defined in:
lib/metacrunch/redis/queue_source.rb

Constant Summary collapse

DEFAULT_OPTIONS =
{
  blocking_mode: false
}

Instance Method Summary collapse

Constructor Details

#initialize(redis, queue_name, options = {}) ⇒ QueueSource

Returns a new instance of QueueSource.



10
11
12
13
14
# File 'lib/metacrunch/redis/queue_source.rb', line 10

def initialize(redis, queue_name, options = {})
  @redis = redis
  @queue_name = queue_name
  @options = DEFAULT_OPTIONS.merge(options)
end

Instance Method Details

#each(&block) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/metacrunch/redis/queue_source.rb', line 16

def each(&block)
  return enum_for(__method__) unless block_given?

  if @options[:blocking_mode]
    while true
      list, result = @redis.blpop(@queue_name, timeout: 0)
      if result.present?
        yield result
      else
        yield nil
      end
    end
  else
    while result = @redis.lpop(@queue_name)
      yield result
    end
  end

  self
end