class Osbourne::Queue

Attributes

name[R]
prefixed_name[R]

Public Class Methods

new(name) click to toggle source
# File lib/osbourne/queue.rb, line 7
def initialize(name)
  @name = name
  @prefixed_name = Osbourne.prefixer(@name)
  arn
end

Public Instance Methods

arn() click to toggle source
# File lib/osbourne/queue.rb, line 17
def arn
  @arn ||= get_attributes["QueueArn"]
end
redrive(retries, dead_letter_arn) click to toggle source
# File lib/osbourne/queue.rb, line 21
def redrive(retries, dead_letter_arn)
  sqs.set_queue_attributes(queue_url:  url,
                           attributes: {
                             'ReceiveMessageWaitTimeSeconds': "20", # required for long polling to function
                             'RedrivePolicy':                 {
                               'deadLetterTargetArn': dead_letter_arn,
                               'maxReceiveCount':     retries
                             }.to_json
                           })
end
url() click to toggle source
# File lib/osbourne/queue.rb, line 13
def url
  @url ||= ensure_queue
end

Private Instance Methods

ensure_queue() click to toggle source
# File lib/osbourne/queue.rb, line 34
def ensure_queue
  Osbourne.logger.debug "[Osbourne] Ensuring queue `#{@prefixed_name}` exists"
  Osbourne.cache.fetch("osbourne_url_for_#{@prefixed_name}") do
    sqs.create_queue(queue_name: @prefixed_name).queue_url
  end
end
get_attributes(attrs: %w[QueueArn]) click to toggle source
# File lib/osbourne/queue.rb, line 41
def get_attributes(attrs: %w[QueueArn])
  sqs.get_queue_attributes(queue_url: url, attribute_names: attrs).attributes
end