Class: QueueBus::Driver

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

Overview

fans out an event to multiple queues

Class Method Summary collapse

Class Method Details

.perform(attributes = {}) ⇒ Object



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

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}
    bus_attr = bus_attr.merge(attributes || {})
    ::QueueBus.enqueue_to(sub.queue_name, sub.class_name, bus_attr)
  end
end

.subscription_matches(attributes) ⇒ Object



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

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