class Realm::SNS::Gateway::QueueManager
Constants
- CleanupWithoutPrefix
Public Class Methods
new(prefix: nil, sqs: Aws::SQS::Resource.new)
click to toggle source
# File lib/realm/sns/gateway/queue_manager.rb, line 17 def initialize(prefix: nil, sqs: Aws::SQS::Resource.new) @prefix = prefix @sqs = sqs end
Public Instance Methods
cleanup(except: [])
click to toggle source
# File lib/realm/sns/gateway/queue_manager.rb, line 41 def cleanup(except: []) raise CleanupWithoutPrefix unless @prefix except_urls = Array(except).map(&:url) @sqs.queues(queue_name_prefix: @prefix).each do |queue| next if except_urls.include?(queue.url) queue.delete if QueueAdapter.new(queue).empty? end end
create(queue_name)
click to toggle source
# File lib/realm/sns/gateway/queue_manager.rb, line 28 def create(queue_name) name = prefix_name(queue_name) raise QueueNameTooLong, name if name.size > 80 QueueAdapter.new(@sqs.create_queue(queue_name: name)) end
get(name: nil, arn: nil)
click to toggle source
# File lib/realm/sns/gateway/queue_manager.rb, line 22 def get(name: nil, arn: nil) throw ArgumentError, 'You have to provide name or arn of the queue' unless name || arn QueueAdapter.new(@sqs.get_queue_by_name(queue_name: name ? prefix_name(name) : arn.split(':')[-1])) end
provide(queue_name)
click to toggle source
# File lib/realm/sns/gateway/queue_manager.rb, line 35 def provide(queue_name) get(name: queue_name) rescue Aws::SQS::Errors::NonExistentQueue create(queue_name) end
Private Instance Methods
prefix_name(name)
click to toggle source
# File lib/realm/sns/gateway/queue_manager.rb, line 54 def prefix_name(name) [@prefix, name].compact.join('-') end