class Aws::Broker::Subscriber
Public Class Methods
new(topic, queue=nil)
click to toggle source
# File lib/aws/broker/subscriber.rb, line 7 def initialize(topic, queue=nil) @topic = topic @queue = queue || queue_name end
Public Instance Methods
subscribe()
click to toggle source
# File lib/aws/broker/subscriber.rb, line 12 def subscribe return unless enabled? create_queue find_queue_arn create_topic sns.subscribe( topic_arn: @topic_arn, protocol: 'sqs', endpoint: @queue_arn ) set_queue_policy end
Private Instance Methods
config()
click to toggle source
# File lib/aws/broker/subscriber.rb, line 80 def config Broker.config end
create_queue()
click to toggle source
# File lib/aws/broker/subscriber.rb, line 31 def create_queue @queue_url = sqs.create_queue( queue_name: @queue ).queue_url end
find_queue_arn()
click to toggle source
# File lib/aws/broker/subscriber.rb, line 37 def find_queue_arn @queue_arn = sqs.get_queue_attributes( queue_url: @queue_url, attribute_names: ['QueueArn'] ).attributes['QueueArn'] end
policy()
click to toggle source
# File lib/aws/broker/subscriber.rb, line 51 def policy <<-POLICY { "Version": "2008-10-17", "Id": "#{@queue_arn}/SQSDefaultPolicy", "Statement": [ { "Sid": "#{@queue_arn}-Sid", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "SQS:*", "Resource": "#{@queue_arn}", "Condition": { "StringEquals": { "aws:SourceArn": "#{@topic_arn}" } } } ] } POLICY end
queue_name()
click to toggle source
# File lib/aws/broker/subscriber.rb, line 27 def queue_name naming.queue(@topic) end
set_queue_policy()
click to toggle source
# File lib/aws/broker/subscriber.rb, line 44 def set_queue_policy sqs.set_queue_attributes( queue_url: @queue_url, attributes: { 'Policy': policy } ) end
sqs()
click to toggle source
# File lib/aws/broker/subscriber.rb, line 76 def sqs config.sqs end