class EventQ::Amazon::QueueManager

Constants

MESSAGE_RETENTION_PERIOD
VISIBILITY_TIMEOUT

Public Class Methods

new(options) click to toggle source
# File lib/eventq/eventq_aws/aws_queue_manager.rb, line 10
def initialize(options)
  mandatory = [:client]
  missing = mandatory - options.keys
  raise "[#{self.class}] - Missing options #{missing} must be specified." unless missing.empty?

  @client = options[:client]
  @visibility_timeout = options[:visibility_timeout] || 300 #5 minutes
  @message_retention_period = options[:message_retention_period] || 1209600 #14 days (max aws value)

end

Public Instance Methods

create_queue(queue) click to toggle source
# File lib/eventq/eventq_aws/aws_queue_manager.rb, line 29
def create_queue(queue)
  @client.sqs_helper.create_queue(queue, queue_attributes(queue))
end
drop_queue(queue) click to toggle source
# File lib/eventq/eventq_aws/aws_queue_manager.rb, line 33
def drop_queue(queue)
  @client.sqs_helper.drop_queue(queue)
end
drop_topic(event_type) click to toggle source
# File lib/eventq/eventq_aws/aws_queue_manager.rb, line 37
def drop_topic(event_type)
  @client.sns_helper.drop_topic(event_type)
end
get_queue(queue) click to toggle source
# File lib/eventq/eventq_aws/aws_queue_manager.rb, line 21
def get_queue(queue)
  if queue.dlq
    queue_exists?(queue.dlq) ? update_queue(queue.dlq) : create_queue(queue.dlq)
  end

  queue_exists?(queue) ? update_queue(queue) : create_queue(queue)
end
queue_attributes(queue) click to toggle source
# File lib/eventq/eventq_aws/aws_queue_manager.rb, line 53
def queue_attributes(queue)
  attributes = {
    VISIBILITY_TIMEOUT => @visibility_timeout.to_s,
    MESSAGE_RETENTION_PERIOD => @message_retention_period.to_s
  }

  if queue.dlq
    dlq_arn = @client.sqs_helper.get_queue_arn(queue.dlq)
    attributes['RedrivePolicy'] = %Q({"maxReceiveCount":"#{queue.max_receive_count}","deadLetterTargetArn":"#{dlq_arn}"})
  end

  attributes
end
queue_exists?(queue) click to toggle source
# File lib/eventq/eventq_aws/aws_queue_manager.rb, line 45
def queue_exists?(queue)
  !!@client.sqs_helper.get_queue_url(queue)
end
topic_exists?(event_type) click to toggle source
# File lib/eventq/eventq_aws/aws_queue_manager.rb, line 41
def topic_exists?(event_type)
  !!@client.sns_helper.get_topic_arn(event_type)
end
update_queue(queue) click to toggle source
# File lib/eventq/eventq_aws/aws_queue_manager.rb, line 49
def update_queue(queue)
  @client.sqs_helper.update_queue(queue, queue_attributes(queue))
end