class Fog::AWS::SQS::Real

Public Class Methods

new(options={}) click to toggle source

Initialize connection to SQS

Notes

options parameter must include values for :aws_access_key_id and :aws_secret_access_key in order to create a connection

Examples

sqs = SQS.new(
 :aws_access_key_id => your_aws_access_key_id,
 :aws_secret_access_key => your_aws_secret_access_key
)

Parameters

  • options<~Hash> - config arguments for connection. Defaults to {}.

    • region<~String> - optional region to use. For instance, 'eu-west-1', 'us-east-1' and etc.

Returns

  • SQS object with connection to AWS.

# File lib/fog/aws/sqs.rb, line 77
def initialize(options={})
  @use_iam_profile = options[:use_iam_profile]
  @instrumentor           = options[:instrumentor]
  @instrumentor_name      = options[:instrumentor_name] || 'fog.aws.sqs'
  @connection_options     = options[:connection_options] || {}
  options[:region] ||= 'us-east-1'
  @region = options[:region]
  @host = options[:host] || "sqs.#{options[:region]}.amazonaws.com"

  @path       = options[:path]        || '/'
  @persistent = options[:persistent]  || false
  @port       = options[:port]        || 443
  @scheme     = options[:scheme]      || 'https'
  @connection = Fog::XML::Connection.new("#{@scheme}://#{@host}:#{@port}#{@path}", @persistent, @connection_options)

  setup_credentials(options)
end

Public Instance Methods

change_message_visibility(queue_url, receipt_handle, visibility_timeout) click to toggle source

Change visibility timeout for a message

Parameters

  • queue_url<~String> - Url of queue for message to update

  • receipt_handle<~String> - Token from previous recieve message

  • visibility_timeout<~Integer> - New visibility timeout in 0..43200

See Also

docs.amazonwebservices.com/AWSSimpleQueueService/latest/APIReference/Query_QueryChangeMessageVisibility.html

# File lib/fog/aws/requests/sqs/change_message_visibility.rb, line 18
def change_message_visibility(queue_url, receipt_handle, visibility_timeout)
  request({
    'Action'            => 'ChangeMessageVisibility',
    'ReceiptHandle'     => receipt_handle,
    'VisibilityTimeout' => visibility_timeout,
    :parser             => Fog::Parsers::AWS::SQS::Basic.new,
    :path               => path_from_queue_url(queue_url)
  })
end
create_queue(name, options = {}) click to toggle source

Create a queue

Parameters

  • name<~String> - Name of queue to create

  • options<~Hash>:

    • DefaultVisibilityTimeout<~String> - Time, in seconds, to hide a message after it has been received, in 0..43200, defaults to 30

See Also

docs.amazonwebservices.com/AWSSimpleQueueService/latest/APIReference/Query_QueryCreateQueue.html

# File lib/fog/aws/requests/sqs/create_queue.rb, line 18
def create_queue(name, options = {})
  request({
    'Action'    => 'CreateQueue',
    'QueueName' => name,
    :parser     => Fog::Parsers::AWS::SQS::CreateQueue.new
  }.merge!(options))
end
delete_message(queue_url, receipt_handle) click to toggle source

Delete a message from a queue

Parameters

  • queue_url<~String> - Url of queue to delete message from

  • receipt_handle<~String> - Token from previous recieve message

See Also

docs.amazonwebservices.com/AWSSimpleQueueService/latest/APIReference/Query_QueryDeleteMessage.html

# File lib/fog/aws/requests/sqs/delete_message.rb, line 17
def delete_message(queue_url, receipt_handle)
  request({
    'Action'        => 'DeleteMessage',
    'ReceiptHandle' => receipt_handle,
    :parser         => Fog::Parsers::AWS::SQS::Basic.new,
    :path           => path_from_queue_url(queue_url),
  })
end
delete_queue(queue_url) click to toggle source

Delete a queue

Parameters

  • queue_url<~String> - Url of queue to delete

See Also

docs.amazonwebservices.com/AWSSimpleQueueService/latest/APIReference/Query_QueryDeleteQueue.html

# File lib/fog/aws/requests/sqs/delete_queue.rb, line 16
def delete_queue(queue_url)
  request({
    'Action' => 'DeleteQueue',
    :parser  => Fog::Parsers::AWS::SQS::Basic.new,
    :path    => path_from_queue_url(queue_url),
  })
end
get_queue_attributes(queue_url, attribute_name) click to toggle source

Get attributes of a queue

Parameters

  • queue_url<~String> - Url of queue to get attributes for

  • attribute_name<~Array> - Name of attribute to return, in ['All', 'ApproximateNumberOfMessages', 'ApproximateNumberOfMessagesNotVisible', 'CreatedTimestamp', 'LastModifiedTimestamp', 'MaximumMessageSize', 'MessageRetentionPeriod', 'Policy', 'QueueArn', 'VisibilityTimeout']

See Also

docs.amazonwebservices.com/AWSSimpleQueueService/latest/APIReference/Query_QueryGetQueueAttributes.html

# File lib/fog/aws/requests/sqs/get_queue_attributes.rb, line 17
def get_queue_attributes(queue_url, attribute_name)
  request({
    'Action'        => 'GetQueueAttributes',
    'AttributeName' => attribute_name,
    :path           => path_from_queue_url(queue_url),
    :parser         => Fog::Parsers::AWS::SQS::GetQueueAttributes.new
  })
end
list_queues(options = {}) click to toggle source

List queues

Parameters

  • options<~Hash>:

    • QueueNamePrefix<~String> - String used to filter results to only those with matching prefixes

See Also

docs.amazonwebservices.com/AWSSimpleQueueService/latest/APIReference/Query_QueryListQueues.html

# File lib/fog/aws/requests/sqs/list_queues.rb, line 17
def list_queues(options = {})
  request({
    'Action' => 'ListQueues',
    :parser  => Fog::Parsers::AWS::SQS::ListQueues.new
  }.merge!(options))
end
receive_message(queue_url, options = {}) click to toggle source

Get a message from a queue (marks it as unavailable temporarily, but does not remove from queue, see delete_message)

Parameters

  • queue_url<~String> - Url of queue to get message from

  • options<~Hash>:

    • Attributes<~Array> - List of attributes to return, in ['All', 'ApproximateFirstReceiveTimestamp', 'ApproximateReceiveCount', 'SenderId', 'SentTimestamp'], defaults to 'All'

    • MaxNumberOfMessages<~Integer> - Maximum number of messages to return, defaults to 1

    • VisibilityTimeout<~Integer> - Duration, in seconds, to hide message from other receives. In 0..43200, defaults to visibility timeout for queue

See Also

docs.amazonwebservices.com/AWSSimpleQueueService/latest/APIReference/Query_QueryReceiveMessage.html

# File lib/fog/aws/requests/sqs/receive_message.rb, line 20
def receive_message(queue_url, options = {})
  request({
    'Action'        => 'ReceiveMessage',
    'AttributeName' => 'All',
    :path           => path_from_queue_url(queue_url),
    :parser         => Fog::Parsers::AWS::SQS::ReceiveMessage.new
  }.merge!(options))
end
reload() click to toggle source
# File lib/fog/aws/sqs.rb, line 95
def reload
  @connection.reset
end
send_message(queue_url, message) click to toggle source

Add a message to a queue

Parameters

  • queue_url<~String> - Url of queue to add message to

  • message<~String> - Message to add to queue

See Also

docs.amazonwebservices.com/AWSSimpleQueueService/latest/APIReference/Query_QuerySendMessage.html

# File lib/fog/aws/requests/sqs/send_message.rb, line 17
def send_message(queue_url, message)
  request({
    'Action'      => 'SendMessage',
    'MessageBody' => message,
    :path         => path_from_queue_url(queue_url),
    :parser       => Fog::Parsers::AWS::SQS::SendMessage.new
  })
end
set_queue_attributes(queue_url, attribute_name, attribute_value) click to toggle source

Get attributes of a queue

Parameters

  • queue_url<~String> - Url of queue to get attributes for

  • attribute_name<~String> - Name of attribute to set, keys in ['MaximumMessageSize', 'MessageRetentionPeriod', 'Policy', 'VisibilityTimeout']

  • attribute_value<~String> - Value to set for attribute

See Also

docs.amazonwebservices.com/AWSSimpleQueueService/latest/APIReference/Query_QuerySetQueueAttributes.html

# File lib/fog/aws/requests/sqs/set_queue_attributes.rb, line 18
def set_queue_attributes(queue_url, attribute_name, attribute_value)
  request({
    'Action'          => 'SetQueueAttributes',
    'Attribute.Name'  => attribute_name,
    'Attribute.Value' => attribute_value,
    :path             => path_from_queue_url(queue_url),
    :parser           => Fog::Parsers::AWS::SQS::Basic.new
  })
end

Private Instance Methods

_request(body, headers, idempotent, parser, path) click to toggle source
# File lib/fog/aws/sqs.rb, line 144
def _request(body, headers, idempotent, parser, path)
  args = {
    :body       => body,
    :expects    => 200,
    :idempotent => idempotent,
    :headers    => headers,
    :method     => 'POST',
    :parser     => parser,
    :path => path
  }.reject{|_,v| v.nil? }

  @connection.request(args)
end
path_from_queue_url(queue_url) click to toggle source
# File lib/fog/aws/sqs.rb, line 110
def path_from_queue_url(queue_url)
  queue_url.split('.com', 2).last.sub(/^:[0-9]+/, '')
end
request(params) click to toggle source
# File lib/fog/aws/sqs.rb, line 114
def request(params)
  refresh_credentials_if_expired

  idempotent  = params.delete(:idempotent)
  parser      = params.delete(:parser)
  path        = params.delete(:path)

  body, headers = AWS.signed_params_v4(
    params,
    { 'Content-Type' => 'application/x-www-form-urlencoded' },
    {
      :method             => 'POST',
      :aws_session_token  => @aws_session_token,
      :signer             => @signer,
      :host               => @host,
      :path               => path || @path,
      :port               => @port,
      :version            => '2012-11-05'
    }
  )

  if @instrumentor
    @instrumentor.instrument("#{@instrumentor_name}.request", params) do
      _request(body, headers, idempotent, parser, path)
    end
  else
    _request(body, headers, idempotent, parser, path)
  end
end
setup_credentials(options) click to toggle source
# File lib/fog/aws/sqs.rb, line 101
def setup_credentials(options)
  @aws_access_key_id      = options[:aws_access_key_id]
  @aws_secret_access_key  = options[:aws_secret_access_key]
  @aws_session_token      = options[:aws_session_token]
  @aws_credentials_expire_at = options[:aws_credentials_expire_at]

  @signer = Fog::AWS::SignatureV4.new( @aws_access_key_id, @aws_secret_access_key, @region, 'sqs')
end