Sha256: 0b57201367370b53c049bd739db56de2d0e03f0fdf2adeb0eccf1e374b7babda
Contents?: true
Size: 1.55 KB
Versions: 36
Compression:
Stored size: 1.55 KB
Contents
require 'toiler/aws/message' module Toiler module Aws # SQS Queue abstraction # Provides methods for querying and acting on a SQS queue class Queue attr_accessor :name, :client, :url def initialize(name, client = nil) @name = name @client = client || ::Aws::SQS::Client.new @url = client.get_queue_url(queue_name: name).queue_url end def visibility_timeout client.get_queue_attributes( queue_url: url, attribute_names: ['VisibilityTimeout'] ).attributes['VisibilityTimeout'].to_i end def delete_messages(options) client.delete_message_batch options.merge queue_url: url end def send_message(options) client.send_message sanitize_message_body options.merge queue_url: url end def send_messages(options) client.send_message_batch( sanitize_message_body options.merge queue_url: url ) end def receive_messages(options) client.receive_message(options.merge(queue_url: url)) .messages .map { |m| Message.new(client, url, m) } end private 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 end end end
Version data entries
36 entries across 36 versions & 1 rubygems