class EventQ::Amazon::SQS
Helper SQS
class to handle the API calls
Attributes
sqs[R]
Public Class Methods
new(client)
click to toggle source
# File lib/eventq/eventq_aws/sqs.rb, line 12 def initialize(client) @sqs = client end
Public Instance Methods
aws_safe_name(name)
click to toggle source
# File lib/eventq/eventq_aws/sqs.rb, line 107 def aws_safe_name(name) return name[0..79].gsub(/[^a-zA-Z\d_\-]/,'') end
create_queue(queue, attributes = {})
click to toggle source
Create a new queue.
# File lib/eventq/eventq_aws/sqs.rb, line 17 def create_queue(queue, attributes = {}) _queue_name = EventQ.create_queue_name(queue) url = get_queue_url(queue) unless url response = sqs.create_queue( { queue_name: aws_safe_name(_queue_name), attributes: attributes } ) url = response.queue_url @@queue_urls[_queue_name] = url end url end
drop_queue(queue)
click to toggle source
# File lib/eventq/eventq_aws/sqs.rb, line 96 def drop_queue(queue) q = get_queue_url(queue) sqs.delete_queue(queue_url: q) _queue_name = EventQ.create_queue_name(queue) @@queue_urls.delete(_queue_name) @@queue_arns.delete(_queue_name) true end
get_queue_arn(queue)
click to toggle source
Returns the ARN of a queue. If none exists, nil will be returned.
@param queue [EventQ::Queue] @return ARN [String]
# File lib/eventq/eventq_aws/sqs.rb, line 52 def get_queue_arn(queue) _queue_name = EventQ.create_queue_name(queue) arn = @@queue_arns[_queue_name] unless arn url = get_queue_url(queue) if url response = sqs.get_queue_attributes( { queue_url: url, attribute_names: ['QueueArn'] } ) arn = response.attributes['QueueArn'] end end arn end
get_queue_url(queue)
click to toggle source
Returns the URL of the queue. If none exists, nil will be returned.
@param queue [EventQ::Queue] @return URL [String]
# File lib/eventq/eventq_aws/sqs.rb, line 76 def get_queue_url(queue) _queue_name = EventQ.create_queue_name(queue) url = @@queue_urls[_queue_name] unless url begin response= sqs.get_queue_url( queue_name: aws_safe_name(_queue_name) ) url = response.queue_url rescue Aws::SQS::Errors::NonExistentQueue # Only want to return nil for this method when not found. end @@queue_urls[_queue_name] = url if url end url end
update_queue(queue, attributes = {})
click to toggle source
Update a queue
# File lib/eventq/eventq_aws/sqs.rb, line 36 def update_queue(queue, attributes = {}) url = get_queue_url(queue) sqs.set_queue_attributes( { queue_url: url, # required attributes: attributes } ) url end