Sha256: 3514fd0e2eb8e499133db1b4c56d1653d0fa1921510bc68ce6a5470315ccbfb1

Contents?: true

Size: 1.31 KB

Versions: 2

Compression:

Stored size: 1.31 KB

Contents

require 'aws-sdk-core'

module Opener
  module Daemons
    class SQS
      attr_reader :sqs, :name, :url

      def self.find(name)
        new(name)
      end

      def initialize(name)
        @sqs = Aws::SQS::Client.new
        @name = name
        begin
          @url = sqs.get_queue_url(:queue_name=>name)[:queue_url]
        rescue Aws::SQS::Errors::NonExistentQueue => e
          sqs.create_queue(:queue_name=>name)
          retry
        end
      end

      def send_message(message)
        sqs.send_message(:queue_url=>url, :message_body=>message)
      end

      def delete_message(handle)
        sqs.delete_message(:queue_url=>url, :receipt_handle=>handle)
      end

      def receive_messages(limit)
        result = sqs.receive_message(:queue_url=>url,
                                     :max_number_of_messages=>limit)[:messages] rescue []
                                            
        result ? to_hash(result) : []                       
                                     
      end
      
      def to_hash(messages)
        messages.map do |m| 
          hash = m.to_hash
          json_body = JSON.parse(hash.delete(:body))
          hash[:body] = json_body["body"] ? json_body["body"] : json_body
          hash
        end
      end
      
      def queue_url
        url
      end

    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
opener-daemons-1.3.0 lib/opener/daemons/sqs.rb
opener-daemons-1.2.0 lib/opener/daemons/sqs.rb