Class: ReMQ::Worker

Inherits:
Object
  • Object
show all
Defined in:
lib/ReMQ/Worker.rb

Instance Method Summary collapse

Constructor Details

#initialize(name = nil) ⇒ Worker

Create a new ReMQ worker.

Parameters:

  • (defaults to: nil)

    Optional name of the queue



7
8
9
10
# File 'lib/ReMQ/Worker.rb', line 7

def initialize(name = nil)
  @queues = []
  add_queue(name) if name
end

Instance Method Details

#add_queue(name) ⇒ Object

Add a queue to the worker.

Parameters:

  • Queue name



22
23
24
25
26
# File 'lib/ReMQ/Worker.rb', line 22

def add_queue(name)
  queues = find_queues(name)
  queues << ReMQ.normalize_queue_name(name)
  @queues = @queues.concat(queues).uniq
end

#queuesArray

Return the list of quques that this worker will run.

Returns:

  • Array of queues



15
16
17
# File 'lib/ReMQ/Worker.rb', line 15

def queues
  @queues.map { |name| name.gsub(/^remq\:/, '') }
end

#remove_queue(name) ⇒ Object

Remove a queue from the worker.

Parameters:

  • Queue name



31
32
33
# File 'lib/ReMQ/Worker.rb', line 31

def remove_queue(name)
  @queues.delete(ReMQ.normalize_queue_name(name))
end

#run(args = {}) ⇒ Object

Run the worker

Parameters:

  • Seconds to run the worker for

  • Number of jobs to run



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/ReMQ/Worker.rb', line 39

def run(args = {})
  if args[:time]
    start = Time.now
    while (start + args[:time]) > Time.now do
      process(1)
    end
  elsif args[:count]
    args[:count].times do
      process(0)
    end
  else
    loop do
      process(0)
    end
  end
end