Class: RightScale::CloudApi::AWS::SQS::Manager
- Inherits:
-
CloudApi::Manager
- Object
- CloudApi::Manager
- RightScale::CloudApi::AWS::SQS::Manager
- Defined in:
- lib/cloud/aws/sqs/manager.rb
Overview
Amazon Simple Queue Service (SQS) compatible manager (thread safe).
When Amazon API expects Queue to be a part of a path then put the name as first parameter:
Examples:
require "right_aws_api"
# Create a manager
sqs = RightScale::CloudApi::AWS::SQS::Manager.new(
ENV['AWS_ACCESS_KEY_ID'],
ENV['AWS_SECRET_ACCESS_KEY'],
ENV['AWS_ACCOUNT_NUMBER'],
'https://sqs.us-east-1.amazonaws.com')
# List all queues
sqs.ListQueues #=>
{"ListQueuesResponse"=>
{"ResponseMetadata"=>{"RequestId"=>"9db0c9d7-35cf-4477-bc13-bbeacaf16d9b"},
"@xmlns"=>"http://queue.amazonaws.com/doc/2011-10-01/",
"ListQueuesResult"=>
{"QueueUrl"=>
["https://sqs.us-east-1.amazonaws.com/826693181925/Abracadabra",
"https://sqs.us-east-1.amazonaws.com/826693181925/JM-Output"] }}}
# Create new queue (Amazon way)...
sqs.CreateQueue( 'QueueName' => 'myCoolQueue',
'Attribute.1.Name' => 'VisibilityTimeout',
'Attribute.1.Value' => '40',
'Attribute.2.Name' => 'MaximumMessageSize',
'Attribute.2.Value' => '2048' )
# ... or using CloudApi way:
sqs.CreateQueue( 'QueueName' => 'myCoolQueue',
'Attribute' => [
{ 'Name' => 'VisibilityTimeout', 'Value' => 40 },
{ 'Name' => 'MaximumMessageSize', 'Value' => 2048 } ])
{"CreateQueueResponse"=>
{"CreateQueueResult"=>
{"QueueUrl"=>
"https://sqs.us-east-1.amazonaws.com/826693181925/myCoolQueue1"},
"ResponseMetadata"=>{"RequestId"=>"bf32f187-00e2-4327-8207-9aa6f786c654"},
"@xmlns"=>"http://queue.amazonaws.com/doc/2011-10-01/"}}
# sqs.GetQueueAttributes('myCoolQueue', 'AttributeName' => ['VisibilityTimeout', 'MaximumMessageSize', 'ApproximateNumberOfMessages']) #=>
{"GetQueueAttributesResponse"=>
{"@xmlns"=>"http://queue.amazonaws.com/doc/2011-10-01/",
"GetQueueAttributesResult"=>
{"Attribute"=>
[{"Name"=>"VisibilityTimeout", "Value"=>"40"},
{"Name"=>"MaximumMessageSize", "Value"=>"2048"},
{"Name"=>"ApproximateNumberOfMessages", "Value"=>"0"}]},
"ResponseMetadata"=>{"RequestId"=>"f70ca08f-97d6-4787-856d-e447529c6a26"}}}
# Send message (do not forget to escape it)
message = 'A big brown dog jumped over the fox'
sqs.SendMessage('myCoolQueue1', 'MessageBody' => URI::escape(message)) #=>
{"SendMessageResponse"=>
{"ResponseMetadata"=>{"RequestId"=>"df903a9d-8409-421d-9ca4-2ccdaf3a38b3"},
"SendMessageResult"=>
{"MessageId"=>"462df5b0-a7f9-40af-8951-b47ec664cfd9",
"MD5OfMessageBody"=>"cf16267845abfaaa6297db494b2c90e8"},
"@xmlns"=>"http://queue.amazonaws.com/doc/2011-10-01/"}}
# Receive message (then unescape it when needed)
sqs.ReceiveMessage('myCoolQueue') #=>
{"ReceiveMessageResponse"=>
{"ReceiveMessageResult"=>
{"Message"=>
{"ReceiptHandle"=>
"Prl0vft3nRgHmktg983Id8/3NhzTWnxZAtOv0Jr3qdfKsqBR68Pl4basOMqgGO3jF2yeAcI4nKhmtDuS7jqOpBE7mbdwfiUFDn55yssPQWcaxxjGVWeu+p45YGxn2aqU6fh4OnTDebUWsBLCPSc9uf+cRuJOwodzeVVT1XUKYxlnwvZJa2qD17wfitoJp5F/lFy4yU0GaDP4VF5icb/AfzxYuO7kg0p9Cswf0pPkWYgV+BOe9Ri0GELw4YkTLMInHk93NtdcWtgM51zbmwDDhOQDIQdfkcKw1z9OdHsr1+4=",
"Body"=>"A%20big%20brown%20dog%20jumped%20over%20the%20fox",
"MD5OfBody"=>"a1bb5681fa24d4f437eeba5a1dd305c1",
"MessageId"=>"71ba4c68-54c9-4ae2-a272-626a6905593b"}},
"ResponseMetadata"=>{"RequestId"=>"c77ab769-ff74-4fdb-ab86-fb9219ab3e0c"},
"@xmlns"=>"http://queue.amazonaws.com/doc/2011-10-01/"}}
# Send message batch (Amazon way) ...
sqs.SendMessageBatch('myCoolQueue',
'SendMessageBatchRequestEntry.1.Id' => 1,
'SendMessageBatchRequestEntry.1.DelaySeconds' => 300,
'SendMessageBatchRequestEntry.1.MessageBody' => CGI::escape('Hahaha!'),
'SendMessageBatchRequestEntry.2.Id' => 2,
'SendMessageBatchRequestEntry.2.DelaySeconds' => 310,
'SendMessageBatchRequestEntry.2.MessageBody' => CGI::escape('Hahaha!!'),
'SendMessageBatchRequestEntry.3.Id' => 3,
'SendMessageBatchRequestEntry.3.DelaySeconds' => 320,
'SendMessageBatchRequestEntry.3.MessageBody' => CGI::escape('Hahaha!!!'),
'SendMessageBatchRequestEntry.4.Id' => 4,
'SendMessageBatchRequestEntry.4.DelaySeconds' => 330,
'SendMessageBatchRequestEntry.4.MessageBody' => CGI::escape('Hahaha!!!!') )
# ... or using CloudApi way:
sqs.SendMessageBatch('myCoolQueue',
'SendMessageBatchRequestEntry' => [
{ 'Id' => 1, 'DelaySeconds' => 300, 'MessageBody' => CGI::escape('Hahaha!') },
{ 'Id' => 2, 'DelaySeconds' => 310, 'MessageBody' => CGI::escape('Hahaha!!') },
{ 'Id' => 3, 'DelaySeconds' => 320, 'MessageBody' => CGI::escape('Hahaha!!!') },
{ 'Id' => 4, 'DelaySeconds' => 330, 'MessageBody' => CGI::escape('Hahaha!!!!') } ] ) #=>
{"SendMessageBatchResponse"=>
{"SendMessageBatchResult"=>
{"SendMessageBatchResultEntry"=>
[{"MessageId"=>"8bc2891f-e2d6-4b92-9138-6fa7d2552e2d",
"Id"=>"1",
"MD5OfMessageBody"=>"c5bfc3f4240d74756238a1e390cc1391"},
{"MessageId"=>"bc52eaf2-9f57-48c2-aa2d-7c3507bc306e",
"Id"=>"2",
"MD5OfMessageBody"=>"659355aa82149d1334942b5879da028e"},
{"MessageId"=>"a7a14acd-b722-4146-be55-34167bb9dac8",
"Id"=>"3",
"MD5OfMessageBody"=>"faf2f2992906f2daf49f35c302dc3454"},
{"MessageId"=>"cd443cd2-68a1-4456-b593-a964f336f12e",
"Id"=>"4",
"MD5OfMessageBody"=>"4033563a06b308f7366ca3d6bc7e3151"}]},
"ResponseMetadata"=>{"RequestId"=>"7237d096-677d-4bc6-be44-7a1a313d18d6"},
"@xmlns"=>"http://queue.amazonaws.com/doc/2011-10-01/"}}
# Get queue attributes:
sqs.GetQueueAttributes('myCoolQueue', 'AttributeName' => 'All') #=>
{"GetQueueAttributesResponse"=>
{"GetQueueAttributesResult"=>
{"Attribute"=>
[{"Name"=>"VisibilityTimeout", "Value"=>"40"},
{"Name"=>"ApproximateNumberOfMessages", "Value"=>"7"},
{"Name"=>"ApproximateNumberOfMessagesNotVisible", "Value"=>"0"},
{"Name"=>"ApproximateNumberOfMessagesDelayed", "Value"=>"0"},
{"Name"=>"CreatedTimestamp", "Value"=>"1322001625"},
{"Name"=>"LastModifiedTimestamp", "Value"=>"1322001625"},
{"Name"=>"QueueArn", "Value"=>"arn:aws:sqs:us-east-1:826693181925:myCoolQueue"},
{"Name"=>"MaximumMessageSize", "Value"=>"2048"},
{"Name"=>"MessageRetentionPeriod", "Value"=>"345600"},
{"Name"=>"DelaySeconds", "Value"=>"0"}]},
"ResponseMetadata"=>{"RequestId"=>"85b2d5f4-b63e-44bc-845c-14e4ae16cb9e"},
"@xmlns"=>"http://queue.amazonaws.com/doc/2011-10-01/"}}
# Delete queue:
sqs.DeleteQueue('myCoolQueue1') #=>
{"DeleteQueueResponse"=>
{"ResponseMetadata"=>{"RequestId"=>"01de6439-6817-4308-8645-2a9430316e8a"},
"@xmlns"=>"http://queue.amazonaws.com/doc/2011-10-01/"}}
See Also: