class Circuitry::Provisioning::QueueCreator
Attributes
queue_name[RW]
visibility_timeout[RW]
Public Class Methods
find_or_create(queue_name, dead_letter_queue_name: nil, max_receive_count: 8, visibility_timeout: 30 * 60)
click to toggle source
# File lib/circuitry/provisioning/queue_creator.rb, line 12 def self.find_or_create(queue_name, dead_letter_queue_name: nil, max_receive_count: 8, visibility_timeout: 30 * 60) creator = new(queue_name, visibility_timeout) result = creator.create_queue creator.create_dead_letter_queue(dead_letter_queue_name, max_receive_count) if dead_letter_queue_name result end
new(queue_name, visibility_timeout)
click to toggle source
# File lib/circuitry/provisioning/queue_creator.rb, line 22 def initialize(queue_name, visibility_timeout) self.queue_name = queue_name self.visibility_timeout = visibility_timeout end
Public Instance Methods
create_dead_letter_queue(name, max_receive_count)
click to toggle source
# File lib/circuitry/provisioning/queue_creator.rb, line 31 def create_dead_letter_queue(name, max_receive_count) @dl_queue ||= Queue.new(create_dl_queue_internal(name, max_receive_count)) end
create_queue()
click to toggle source
# File lib/circuitry/provisioning/queue_creator.rb, line 27 def create_queue @queue ||= Queue.new(create_primary_queue_internal) end
Private Instance Methods
build_redrive_policy(deadletter_arn, max_receive_count)
click to toggle source
# File lib/circuitry/provisioning/queue_creator.rb, line 52 def build_redrive_policy(deadletter_arn, max_receive_count) { 'RedrivePolicy' => %({"maxReceiveCount":"#{max_receive_count}", "deadLetterTargetArn":"#{deadletter_arn}"}) } end
create_dl_queue_internal(name, max_receive_count)
click to toggle source
# File lib/circuitry/provisioning/queue_creator.rb, line 40 def create_dl_queue_internal(name, max_receive_count) dl_url = sqs.create_queue(queue_name: name).queue_url dl_arn = sqs.get_queue_attributes( queue_url: dl_url, attribute_names: ['QueueArn'] ).attributes['QueueArn'] policy = build_redrive_policy(dl_arn, max_receive_count) sqs.set_queue_attributes(queue_url: create_queue.url, attributes: policy) dl_url end
create_primary_queue_internal()
click to toggle source
# File lib/circuitry/provisioning/queue_creator.rb, line 58 def create_primary_queue_internal attributes = { 'VisibilityTimeout' => visibility_timeout.to_s } sqs.create_queue(queue_name: queue_name, attributes: attributes).queue_url end