Parent

Files

RightAws::SqsGen2::Queue

Attributes

name[R]
sqs[R]
url[R]

Public Class Methods

create(sqs, url_or_name, create=true, visibility=nil) click to toggle source

Returns Queue instance by queue name. If the queue does not exist at Amazon SQS and create is true, the method creates it.

RightAws::SqsGen2::Queue.create(sqs, 'my_awesome_queue') #=> #<RightAws::SqsGen2::Queue:0xb7b626e4 ... >
# File lib/sqs/right_sqs_gen2.rb, line 103
def self.create(sqs, url_or_name, create=true, visibility=nil)
  sqs.queue(url_or_name, create, visibility)
end
new(sqs, url_or_name) click to toggle source

Creates new Queue instance. Does not create a queue at Amazon.

queue = RightAws::SqsGen2::Queue.new(sqs, 'my_awesome_queue')
# File lib/sqs/right_sqs_gen2.rb, line 112
def initialize(sqs, url_or_name)
  @sqs  = sqs
  @url  = @sqs.interface.queue_url_by_name(url_or_name)
  @name = @sqs.interface.queue_name_by_url(@url)
end

Public Instance Methods

add_permissions(label, grantees, actions) click to toggle source

Add permission to the queue.

queue.add_permissions('testLabel',['125074342641', '125074342642'],
                      ['SendMessage','SendMessage','ReceiveMessage']) #=> true
# File lib/sqs/right_sqs_gen2.rb, line 277
def add_permissions(label, grantees, actions)
  @sqs.interface.add_permissions(@url, label, grantees, actions)
end
clear() click to toggle source

Clears queue, deleting only the visible messages. Any message within its visibility timeout will not be deleted, and will re-appear in the queue in the future when the timeout expires.

To delete all messages in a queue and eliminate the chance of any messages re-appearing in the future, it's best to delete the queue and re-create it as a new queue. Note that doing this will take at least 60 s since SQS does not allow re-creation of a queue within this interval.

queue.clear() #=> true
# File lib/sqs/right_sqs_gen2.rb, line 137
def clear()
  @sqs.interface.clear_queue(@url)
end
delete(force=false) click to toggle source

Deletes queue. Any messages in the queue will be permanently lost. Returns true.

NB: Use with caution; severe data loss is possible!

queue.delete(true) #=> true

# File lib/sqs/right_sqs_gen2.rb, line 148
def delete(force=false)
  @sqs.interface.delete_queue(@url)
end
get_attribute(attribute='All') click to toggle source

Retrieves queue attributes. If the name of attribute is set, returns its value. Otherwise, returns a hash of attributes.

queue.get_attribute('VisibilityTimeout') #=> {"VisibilityTimeout"=>"45"}

P.S. This guy is deprecated. Use get_attributes instead.

# File lib/sqs/right_sqs_gen2.rb, line 250
def get_attribute(attribute='All')
  attributes = get_attributes(attribute)
  attribute=='All' ? attributes : attributes[attribute]
end
get_attributes(*attributes) click to toggle source

Retrieves queue attributes.

queue.get_attributes #=>
  {"ApproximateNumberOfMessages" => "0",
   "LastModifiedTimestamp"       => "1240946032",
   "CreatedTimestamp"            => "1240816887",
   "VisibilityTimeout"           => "30",
   "Policy"                      => "{"Version":"2008-10-17","Id":...}"}

queue.get_attributes("LastModifiedTimestamp", "VisibilityTimeout") #=>
  {"LastModifiedTimestamp" => "1240946032",
   "VisibilityTimeout"     => "30"}
# File lib/sqs/right_sqs_gen2.rb, line 268
def get_attributes(*attributes)
  @sqs.interface.get_queue_attributes(@url, attributes)
end
get_permissions() click to toggle source

Get current permissions set. The set is JSON packed.

sqs.get_permissions #=>
  '{"Version":"2008-10-17","Id":"/826693181925/kd-test-gen-2_5/SQSDefaultPolicy",
    "Statement":[{"Sid":"kd-perm-04","Effect":"Allow","Principal":{"AWS":"100000000001",
    "AWS":"100000000001","AWS":"100000000002"},"Action":["SQS:SendMessage","SQS:DeleteMessage",
    "SQS:ReceiveMessage"],"Resource":"/826693181925/kd-test-gen-2_5"},{"Sid":"kd-perm-03",
    "Effect":"Allow","Principal":{"AWS":"648772224137"},"Action":"SQS:SendMessage",
    "Resource":"/826693181925/kd-test-gen-2_5"}]}'
# File lib/sqs/right_sqs_gen2.rb, line 299
def get_permissions
  get_attributes('Policy')['Policy']
end
pop(attributes=nil) click to toggle source

Pops (and deletes) first accessible message from queue. Returns Message instance or nil if the queue is empty.

queue.pop #=> #<RightAws::SqsGen2::Message:0xb7bf0884 ... >

# pop a message with custom attributes
m = queue.pop(['SenderId', 'SentTimestamp']) #=> #<RightAws::SqsGen2::Message:0xb7bf1884 ... >
m.attributes #=> {"SentTimestamp"=>"1240991906937", "SenderId"=>"800000000005"}
# File lib/sqs/right_sqs_gen2.rb, line 198
def pop(attributes=nil)
  list = @sqs.interface.pop_messages(@url, 1, attributes)
  return nil if list.empty?
  entry = list[0]
  msg = Message.new(self, entry['MessageId'], entry['ReceiptHandle'], entry['Body'], visibility, entry['Attributes'])
  msg.received_at = Time.now 
  msg.receive_checksum = entry['MD5OfBody']
  msg
end
push(message) click to toggle source
Alias for: send_message
receive(visibility=nil, attributes=nil) click to toggle source

Retrieves first accessible message from queue. Returns Message instance or nil it the queue is empty.

queue.receive #=> #<RightAws::SqsGen2::Message:0xb7bf0884 ... >
# File lib/sqs/right_sqs_gen2.rb, line 184
def receive(visibility=nil, attributes=nil)
  list = receive_messages(1, visibility, attributes)
  list.empty? ? nil : list[0]
end
receive_messages(number_of_messages=1, visibility=nil, attributes=nil) click to toggle source

Retrieves several messages from queue. Returns an array of Message instances.

queue.receive_messages(2,10) #=> array of messages
# File lib/sqs/right_sqs_gen2.rb, line 169
def receive_messages(number_of_messages=1, visibility=nil, attributes=nil)
  list = @sqs.interface.receive_message(@url, number_of_messages, visibility, attributes)
  list.map! do |entry|
    msg = Message.new(self, entry['MessageId'], entry['ReceiptHandle'], entry['Body'], visibility, entry['Attributes'])
    msg.received_at = Time.now 
    msg.receive_checksum = entry['MD5OfBody']
    msg
  end
end
remove_permissions(label) click to toggle source

Revoke any permissions in the queue policy that matches the label parameter.

sqs.remove_permissions('testLabel') # => true
# File lib/sqs/right_sqs_gen2.rb, line 285
def remove_permissions(label)
  @sqs.interface.remove_permissions(@url, label)
end
send_message(message) click to toggle source

Sends new message to queue. Returns new Message instance that has been sent to queue.

# File lib/sqs/right_sqs_gen2.rb, line 154
def send_message(message)
  message = message.to_s
  res = @sqs.interface.send_message(@url, message)
  msg = Message.new(self, res['MessageId'], nil, message)
  msg.send_checksum = res['MD5OfMessageBody']
  msg.sent_at = Time.now
  msg
end
Also aliased as: push
set_attribute(attribute, value) click to toggle source

Sets new queue attribute value. Not all attributes may be changed: ApproximateNumberOfMessages (for example) is a read only attribute. Returns a value to be assigned to attribute. Currently, 'VisibilityTimeout' is the only settable queue attribute. Attempting to set non-existent attributes generates an indignant exception.

queue.set_attribute('VisibilityTimeout', '100') #=> '100' queue.get_attribute('VisibilityTimeout') #=> '100'

# File lib/sqs/right_sqs_gen2.rb, line 239
def set_attribute(attribute, value)
  @sqs.interface.set_queue_attributes(@url, attribute, value)
  value
end
size() click to toggle source

Retrieves queue size.

queue.size #=> 1
# File lib/sqs/right_sqs_gen2.rb, line 122
def size
  @sqs.interface.get_queue_length(@url)
end
visibility() click to toggle source

Retrieves VisibilityTimeout value for the queue. Returns new timeout value.

queue.visibility #=> 30
# File lib/sqs/right_sqs_gen2.rb, line 213
def visibility
  @sqs.interface.get_queue_attributes(@url, 'VisibilityTimeout')['VisibilityTimeout']
end
visibility=(visibility_timeout) click to toggle source

Sets new VisibilityTimeout for the queue. Returns new timeout value.

queue.visibility #=> 30
queue.visibility = 33
queue.visibility #=> 33
# File lib/sqs/right_sqs_gen2.rb, line 224
def visibility=(visibility_timeout)
  @sqs.interface.set_queue_attributes(@url, 'VisibilityTimeout', visibility_timeout)
  visibility_timeout
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.