Class: QueueBus::Driver

Inherits:
Object
  • Object
show all
Includes:
Worker
Defined in:
lib/queue_bus/driver.rb

Overview

fans out an event to multiple queues

Class Method Summary collapse

Methods included from Worker

included, #perform

Class Method Details

.perform(attributes = {}) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/queue_bus/driver.rb', line 16

def perform(attributes={})
  raise "No attributes passed" if attributes.empty?

  ::QueueBus.log_worker("Driver running: #{attributes.inspect}")

  subscription_matches(attributes).each do |sub|
    ::QueueBus.log_worker("  ...sending to #{sub.queue_name} queue with class #{sub.class_name} for app #{sub.app_key} because of subscription: #{sub.key}")

    bus_attr = {"bus_driven_at" => Time.now.to_i, "bus_rider_queue" => sub.queue_name, "bus_rider_app_key" => sub.app_key, "bus_rider_sub_key" => sub.key, "bus_rider_class_name" => sub.class_name}
    ::QueueBus.enqueue_to(sub.queue_name, sub.class_name, bus_attr.merge(attributes || {}))
  end
end

.subscription_matches(attributes) ⇒ Object



7
8
9
10
11
12
13
14
# File 'lib/queue_bus/driver.rb', line 7

def subscription_matches(attributes)
  out = []
  Application.all.each do |app|
    subs = app.subscription_matches(attributes)
    out.concat(subs)
  end
  out
end