Class: Lagomorph::Supervisor

Inherits:
Object
  • Object
show all
Defined in:
lib/lagomorph/supervisor.rb

Instance Method Summary collapse

Constructor Details

#initialize(session) ⇒ Supervisor

Returns a new instance of Supervisor.



7
8
9
# File 'lib/lagomorph/supervisor.rb', line 7

def initialize(session)
  @session = session
end

Instance Method Details

#route(queue_name, worker_class, options = {}) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/lagomorph/supervisor.rb', line 11

def route(queue_name, worker_class, options = {})
  prefetch    = options.fetch :prefetch,    10
  durable     = options.fetch :durable,     false
  subscribers = options.fetch :subscribers, 1

  subscribers.times.map do
    channel = @session.create_channel(prefetch)
    queue   = QueueBuilder.new(channel).queue(queue_name, durable: durable)

    Subscriber.new(worker_class).subscribe(queue, channel)
  end
end