Class: Circuitry::Provisioning::SubscriptionCreator

Inherits:
Object
  • Object
show all
Includes:
Services::SNS, Services::SQS
Defined in:
lib/circuitry/provisioning/subscription_creator.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Services::SQS

#sqs

Methods included from Services::SNS

#sns

Constructor Details

#initialize(queue, topics) ⇒ SubscriptionCreator

Returns a new instance of SubscriptionCreator.

Raises:

  • (ArgumentError)


17
18
19
20
21
22
23
# File 'lib/circuitry/provisioning/subscription_creator.rb', line 17

def initialize(queue, topics)
  raise ArgumentError, 'queue must be a Circuitry::Queue' unless queue.is_a?(Circuitry::Queue)
  raise ArgumentError, 'topics must be an array' unless topics.is_a?(Array)

  self.queue = queue
  self.topics = topics
end

Instance Attribute Details

#queueObject

Returns the value of attribute queue.



10
11
12
# File 'lib/circuitry/provisioning/subscription_creator.rb', line 10

def queue
  @queue
end

#topicsObject

Returns the value of attribute topics.



11
12
13
# File 'lib/circuitry/provisioning/subscription_creator.rb', line 11

def topics
  @topics
end

Class Method Details

.subscribe_all(queue, topics) ⇒ Object



13
14
15
# File 'lib/circuitry/provisioning/subscription_creator.rb', line 13

def self.subscribe_all(queue, topics)
  new(queue, topics).subscribe_all
end

Instance Method Details

#subscribe_allObject



25
26
27
28
29
30
31
32
33
# File 'lib/circuitry/provisioning/subscription_creator.rb', line 25

def subscribe_all
  topics.each do |topic|
    sns.subscribe(topic_arn: topic.arn, endpoint: queue.arn, protocol: 'sqs')
  end

  if topics.any?
    sqs.set_queue_attributes(queue_url: queue.url, attributes: build_policy)
  end
end