Amazon SQS Queue

Queue-centric wrapper for Amazon Simple Queue Service

Version

2009.09.02

Copyright

2006-2009 Foleeo, Inc., and contributors.

License

Simplified BSD Licensehttp://opensource.org/licenses/bsd-license.php

See Also

CloudFusionhttp://getcloudfusion.com
Amazon SQShttp://aws.amazon.com/sqs

Constants

SQSQUEUE_DEFAULT_ERROR

Specify the default error message.

AmazonSQSQueue

Container for all Amazon SQS-related methods.  Inherits additional methods from AmazonSQS.

Extends

AmazonSQS

Properties

queue_name

The queue URL to use for every request.

Functions

__construct()

public function __construct($queue =  null,
$key =  null,
$secret_key =  null)

The constructor

Access

public

Parameters

queuestring (Optional) The NAME for the queue to revolve around.  Set as null if you plan to create a new queue, as it will be auto-set.
keystring (Optional) Your Amazon API Key.  If blank, it will look for the AWS_KEY constant.
secret_keystring (Optional) Your Amazon API Secret Key.  If blank, it will look for the AWS_SECRET_KEY constant.

Returns

boolean false if no valid values are set, otherwise true.

Examples

AmazonSQSQueue::send_message
<?php

// Dependencies
require_once 'cloudfusion.class.php';

// Send a message to the queue
$sqs = new AmazonSQSQueue('warpshare-unit-test');
$response = $sqs->send_message('This is my message.');

// Success
var_dump($response->isOK());

/** [Expected output] 
bool(true)
*/
?>
AmazonSQSQueue::receive_message
<?php

// Dependencies
require_once 'cloudfusion.class.php';

// Receive a message
$sqs = new AmazonSQSQueue('warpshare-unit-test');
$response = $sqs->receive_message();

// Store the message receipt in a temp file so that the delete message can grab it later.
// This is The Wrong Way To Do It™
file_put_contents('receipt_handle_queue.cache', (string) $response->body->ReceiveMessageResult->Message->ReceiptHandle); // Pass data to delete_message.

// Success?
var_dump($response->isOK());

/** [Expected output] 
bool(true)
*/
?>
AmazonSQSQueue::delete_message
<?php

// Dependencies
require_once 'cloudfusion.class.php';

// Delete a message we've read
$sqs = new AmazonSQSQueue('warpshare-unit-test');
$response = $sqs->delete_message(
	file_get_contents('receipt_handle_queue.cache') // See receive_message() example for why we're doing this.
);

// Success?
var_dump($response->isOK());

/** [Expected output] 
bool(true)

*/
?>

create_queue()

public function create_queue($queue_name,  
$returnCurlHandle =  null)

Identical to AmazonSQS::create_queue().  The queue URL created from this method will replace the queue URL already being used with this class.

New queue URL will NOT automatically apply when using MultiCurl for parallel requests.

Access

public

Parameters

queue_nameSee AmazonSQS::create_queue().
returnCurlHandleSee AmazonSQS::create_queue().

Returns

ResponseCore object

Examples

AmazonSQSQueue::create_queue
<?php

// Dependencies
require_once 'cloudfusion.class.php';

// Create a queue
$sqs = new AmazonSQSQueue();
$response = $sqs->create_queue('warpshare-unit-test');

// Success?
var_dump($response->isOK());

/** [Expected output] 
bool(true)
*/
?>
AmazonSQSQueue::create_queue (EU)
<?php

// Dependencies
require_once 'cloudfusion.class.php';

// Create a queue
$sqs = new AmazonSQSQueue();
$sqs->set_locale(SQS_LOCATION_EU);
$response = $sqs->create_queue('warpshare-unit-test');

// Success?
var_dump($response->isOK());

/** [Expected output] 
bool(true)
*/
?>

delete_queue()

public function delete_queue($returnCurlHandle =  null)

Identical to AmazonSQS::delete_queue(), except that you don’t need to pass in a queue URL.

Access

public

Parameters

returnCurlHandleSee AmazonSQS::delete_queue().

Returns

ResponseCore object

Examples

AmazonSQSQueue::delete_queue
<?php

// Dependencies
require_once 'cloudfusion.class.php';

// Delete a queue
$sqs = new AmazonSQSQueue('warpshare-unit-test');
$response = $sqs->delete_queue();

// Success?
var_dump($response->isOK());

/** [Expected output] 
bool(true)
*/
?>
AmazonSQSQueue::delete_queue (EU)
<?php

// Dependencies
require_once 'cloudfusion.class.php';

// Delete a queue
$sqs = new AmazonSQSQueue('warpshare-unit-test');
$sqs->set_locale(SQS_LOCATION_EU);
$response = $sqs->delete_queue();

// Success?
var_dump($response->isOK());

/** [Expected output] 
bool(true)
*/
?>

get_queue_attributes()

public function get_queue_attributes($attributes =  'All',
$returnCurlHandle =  null)

Identical to AmazonSQS::get_queue_attributes(), except that you don’t need to pass in a queue URL.

Access

public

Parameters

attributesstring | array (Optional) The attribute you want to get.  Setting this value to ‘All’ returns all the queue’s attributes.  Pass a string for a single attribute, or an indexed array for multiple attributes.  Possible values are ‘All’, ‘ApproximateNumberOfMessages’, ‘VisibilityTimeout’, ‘CreatedTimestamp’, ‘LastModifiedTimestamp’, and ‘Policy’.  Defaults to ‘All’.
returnCurlHandleSee AmazonSQS::get_queue_attributes().

Returns

ResponseCore object

Examples

AmazonSQSQueue::get_queue_attributes
<?php

// Dependencies
require_once 'cloudfusion.class.php';

// Get queue attributes
$sqs = new AmazonSQSQueue('warpshare-unit-test');
$response = $sqs->get_queue_attributes();

// Success?
var_dump($response->isOK());

/** [Expected output] 
bool(true)
*/
?>
AmazonSQSQueue::get_queue_attributes, passing a single string as an attribute.
<?php

// Dependencies
require_once 'cloudfusion.class.php';

// Get queue attributes
$sqs = new AmazonSQSQueue('warpshare-unit-test');
$response = $sqs->get_queue_attributes('All');

// Success?
var_dump($response->isOK());

/** [Expected output] 
bool(true)
*/
?>
AmazonSQSQueue::get_queue_attributes, passing an array of attributes.
<?php

// Dependencies
require_once 'cloudfusion.class.php';

// Get queue attributes
$sqs = new AmazonSQSQueue('warpshare-unit-test');
$response = $sqs->get_queue_attributes(array(
	'ApproximateNumberOfMessages',
	'VisibilityTimeout',
	'CreatedTimestamp',
	'LastModifiedTimestamp',
	'Policy'
));

// Success?
var_dump($response->isOK());

/** [Expected output] 
bool(true)
*/
?>

set_queue_attributes()

public function set_queue_attributes($opt =  null)

Identical to AmazonSQS::set_queue_attributes(), except that you don’t need to pass in a queue URL.

Access

public

Parameters

optSee AmazonSQS::set_queue_attributes().

Returns

ResponseCore object

Examples

AmazonSQSQueue::set_queue_attributes, changing visibility timeout
<?php

// Dependencies
require_once 'cloudfusion.class.php';

// Change visibility timeout
$sqs = new AmazonSQSQueue('warpshare-unit-test');
$response = $sqs->set_queue_attributes(array(
	'VisibilityTimeout' => 7200
));

// Success?
var_dump($response->isOK());

/** [Expected output] 
bool(true)
*/
?>

send_message()

public function send_message($message,  
$returnCurlHandle =  null)

Identical to AmazonSQS::send_message(), except that you don’t need to pass in a queue URL.

Access

public

Parameters

messageSee AmazonSQS::send_message().
returnCurlHandleSee AmazonSQS::send_message().

Returns

ResponseCore object

Examples

AmazonSQSQueue::send_message
<?php

// Dependencies
require_once 'cloudfusion.class.php';

// Send a message to the queue
$sqs = new AmazonSQSQueue('warpshare-unit-test');
$response = $sqs->send_message('This is my message.');

// Success
var_dump($response->isOK());

/** [Expected output] 
bool(true)
*/
?>
AmazonSQSQueue::send_message (EU)
<?php

// Dependencies
require_once 'cloudfusion.class.php';

// Send a message to the queue
$sqs = new AmazonSQSQueue('warpshare-unit-test');
$sqs->set_locale(SQS_LOCATION_EU);
$response = $sqs->send_message('This is my message.');

// Success
var_dump($response->isOK());

/** [Expected output] 
bool(true)
*/
?>

receive_message()

public function receive_message($opt =  null)

Identical to AmazonSQS::receive_message(), except that you don’t need to pass in a queue URL.

Access

public

Parameters

optSee AmazonSQS::receive_message().

Returns

ResponseCore object

Examples

AmazonSQSQueue::receive_message
<?php

// Dependencies
require_once 'cloudfusion.class.php';

// Receive a message
$sqs = new AmazonSQSQueue('warpshare-unit-test');
$response = $sqs->receive_message();

// Store the message receipt in a temp file so that the delete message can grab it later.
// This is The Wrong Way To Do It™
file_put_contents('receipt_handle_queue.cache', (string) $response->body->ReceiveMessageResult->Message->ReceiptHandle); // Pass data to delete_message.

// Success?
var_dump($response->isOK());

/** [Expected output] 
bool(true)
*/
?>
AmazonSQSQueue::receive_message, change visibility timeout
<?php

// Dependencies
require_once 'cloudfusion.class.php';

// Receive a message, and allow more time to process
$sqs = new AmazonSQSQueue('warpshare-unit-test');
$response = $sqs->receive_message(array(
	'VisibilityTimeout' => 7200
));

// Success?
var_dump($response->isOK());

/** [Expected output] 
bool(true)
*/
?>
AmazonSQSQueue::receive_message, only a single message
<?php

// Dependencies
require_once 'cloudfusion.class.php';

// Receive a single message
$sqs = new AmazonSQSQueue('warpshare-unit-test');
$response = $sqs->receive_message(array(
	'MaxNumberOfMessages' => 1
));

// Success?
var_dump($response->isOK());

/** [Expected output] 
bool(true)
*/
?>
AmazonSQSQueue::receive_message, single attribute
<?php

// Dependencies
require_once 'cloudfusion.class.php';

// Receive a single message
$sqs = new AmazonSQSQueue('warpshare-unit-test');
$response = $sqs->receive_message(array(
	'AttributeName' => 'SenderId'
));

// Success?
var_dump($response->isOK());

/** [Expected output] 
bool(true)
*/
?>
AmazonSQSQueue::receive_message, multiple attributes
<?php

// Dependencies
require_once 'cloudfusion.class.php';

// Receive a single message
$sqs = new AmazonSQSQueue('warpshare-unit-test');
$response = $sqs->receive_message(array(
	'AttributeName' => array(
		'SenderId',
		'SentTimestamp'
	)
));

// Success?
var_dump($response->isOK());

/** [Expected output] 
bool(true)
*/
?>

delete_message()

public function delete_message($receipt_handle,  
$returnCurlHandle =  null)

Identical to AmazonSQS::delete_message(), except that you don’t need to pass in a queue URL.

Access

public

Parameters

receipt_handleSee AmazonSQS::delete_message().
returnCurlHandleSee AmazonSQS::delete_message().

Returns

ResponseCore object

Examples

AmazonSQSQueue::delete_message
<?php

// Dependencies
require_once 'cloudfusion.class.php';

// Delete a message we've read
$sqs = new AmazonSQSQueue('warpshare-unit-test');
$response = $sqs->delete_message(
	file_get_contents('receipt_handle_queue.cache') // See receive_message() example for why we're doing this.
);

// Success?
var_dump($response->isOK());

/** [Expected output] 
bool(true)

*/
?>

get_queue_size()

public function get_queue_size()

Identical to AmazonSQS::get_queue_size(), except that you don’t need to pass in a queue URL.

Access

public

Returns

integer The Approximate number of messages in the queue.

Examples

AmazonSQSQueue::get_queue_size
<?php

// Dependencies
require_once 'cloudfusion.class.php';

// Get queue size
$sqs = new AmazonSQSQueue('warpshare-unit-test');
$response = $sqs->get_queue_size();

// Success?
var_dump($response);

/** [Expected output] 
*/
?>