class Toiler::Aws::Queue
SQS Queue
abstraction Provides methods for querying and acting on a SQS queue
Attributes
client[RW]
name[RW]
url[RW]
Public Class Methods
new(name, client = nil)
click to toggle source
# File lib/toiler/aws/queue.rb, line 10 def initialize(name, client = nil) @name = name @client = client || ::Aws::SQS::Client.new @url = client.get_queue_url(queue_name: name).queue_url end
Public Instance Methods
delete_messages(options)
click to toggle source
# File lib/toiler/aws/queue.rb, line 23 def delete_messages(options) client.delete_message_batch options.merge queue_url: url end
receive_messages(options)
click to toggle source
# File lib/toiler/aws/queue.rb, line 37 def receive_messages(options) client.receive_message(options.merge(queue_url: url)) .messages .map { |m| Message.new(client, url, m) } end
send_message(options)
click to toggle source
# File lib/toiler/aws/queue.rb, line 27 def send_message(options) client.send_message sanitize_message_body options.merge queue_url: url end
send_messages(options)
click to toggle source
# File lib/toiler/aws/queue.rb, line 31 def send_messages(options) client.send_message_batch( sanitize_message_body options.merge queue_url: url ) end
visibility_timeout()
click to toggle source
# File lib/toiler/aws/queue.rb, line 16 def visibility_timeout client.get_queue_attributes( queue_url: url, attribute_names: ['VisibilityTimeout'] ).attributes['VisibilityTimeout'].to_i end
Private Instance Methods
sanitize_message_body(options)
click to toggle source
# File lib/toiler/aws/queue.rb, line 45 def sanitize_message_body(options) messages = options[:entries] || [options] messages.each do |m| body = m[:message_body] if body.is_a?(Hash) m[:message_body] = JSON.dump(body) elsif !body.is_a? String fail ArgumentError, "Body must be a String, found #{body.class}" end end options end