class MessageSqs

Attributes

name[R]

Public Class Methods

new(name, options={}) click to toggle source

options:

> :create_queue, default true

# File lib/message-sqs.rb, line 9
def initialize(name, options={})
  @name = name
  @client = Aws::SQS::Client.new
  @queue_url = options[:queue_url] || @client.create_queue(:queue_name => @name)[:queue_url]
end

Public Instance Methods

<<(msg)
Alias for: enq
deq(size=1, &block) click to toggle source
# File lib/message-sqs.rb, line 20
def deq(size=1, &block)
  msgs = @client.receive_message(req_params(:max_number_of_messages => size))
  Array(msgs[:messages]).each do |msg|
    begin
      block.call(msg[:body])
    ensure
      @client.delete_message(req_params(:receipt_handle => msg[:receipt_handle]))
    end
  end
end
enq(msg) click to toggle source
# File lib/message-sqs.rb, line 15
def enq(msg)
  @client.send_message(req_params(:message_body => msg))
end
Also aliased as: <<
size() click to toggle source
# File lib/message-sqs.rb, line 31
def size
  attr_name = 'ApproximateNumberOfMessages'
  ret = @client.get_queue_attributes(req_params(:attribute_names => [attr_name]))
  ret[:attributes][attr_name].to_i
end

Private Instance Methods

req_params(params) click to toggle source
# File lib/message-sqs.rb, line 38
def req_params(params)
  {:queue_url => @queue_url}.merge(params)
end