Amazon Simple Queue Service (Amazon SQS) ofrece una cola alojada, fiable y altamente escalable para almacenar mensajes mientras viajan entre equipos. Al usar Amazon SQS, los desarrolladores pueden mover datos fácilmente entre componentes distribuidos de sus aplicaciones que realizan diferentes tareas, sin perder mensajes ni requerir que cada componente esté siempre disponible. Amazon SQS facilita la construcción de un flujo de trabajo automatizado, funcionando en estrecha conjunción con Amazon Elastic Compute Cloud (Amazon EC2) y los demás servicios web de infraestructura de AWS.
Amazon SQS funciona exponiendo la infraestructura de mensajería a escala web de Amazon como un servicio web. Cualquier equipo en Internet puede añadir o leer mensajes sin necesidad de software instalado ni configuraciones especiales de cortafuegos. Los componentes de las aplicaciones que usan Amazon SQS pueden ejecutarse de forma independiente, y no necesitan estar en la misma red, desarrollarse con las mismas tecnologías, ni ejecutarse al mismo tiempo.
Antes de poder empezar con
Zend_Service_Amazon_Sqs, primero debe
registrarse para obtener una cuenta. Consulte la página SQS FAQ en
el sitio web de Amazon para más información.
Después de registrarse, recibirá una clave de aplicación y una clave secreta. Necesitará ambas para acceder al servicio SQS.
La clase Zend_Service_Amazon_Sqs proporciona
el envoltorio PHP para la interfaz REST de Amazon SQS. Consulte la
documentación
de Amazon SQS para una descripción detallada del
servicio. Necesitará estar familiarizado con los conceptos básicos para
poder usar este servicio.
Zend_Service_Amazon_Sqs proporciona
la siguiente funcionalidad:
Un único punto para configurar sus credenciales de autenticación de amazon.sqs que se pueden usar en todos los espacios de nombres de amazon.sqs.
Un objeto proxy que es más conveniente de usar que un cliente HTTP por sí solo, eliminando en su mayoría la necesidad de construir manualmente peticiones POST HTTP para acceder al servicio REST.
Un envoltorio de respuesta que analiza el cuerpo de cada respuesta y lanza una excepción si se produce un error, eliminando la necesidad de comprobar repetidamente el éxito de muchos comandos.
Métodos de conveniencia adicionales para algunas de las operaciones más comunes.
Una vez que se haya registrado en Amazon SQS, estará listo para crear su cola y almacenar algunos mensajes en SQS. Cada cola puede contener una cantidad ilimitada de mensajes, identificados por nombre.
El siguiente ejemplo muestra cómo crear una cola, y cómo almacenar y recuperar mensajes.
Ejemplo 64.70. Ejemplo de uso de Zend_Service_Amazon_Sqs
$sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key);
$queue_url = $sqs->create('test');
$message = 'this is a test';
$message_id = $sqs->send($queue_url, $message);
foreach ($sqs->receive($queue_url) as $message) {
echo $message['body'].'<br/>';
}
Dado que el servicio Zend_Service_Amazon_Sqs
requiere autenticación, debería pasar sus credenciales (clave de AWS
y clave secreta) al constructor. Si solo usa una cuenta,
puede establecer credenciales predeterminadas para el servicio:
Zend_Service_Amazon_Sqs::setKeys($my_aws_key, $my_aws_secret_key); $sqs = new Zend_Service_Amazon_Sqs();
Todos los mensajes de SQS se almacenan en colas. Una cola debe crearse antes de cualquier operación con mensajes. Los nombres de cola deben ser únicos bajo su clave de acceso y clave secreta.
Los nombres de cola pueden contener letras minúsculas, dígitos, puntos (.), guiones bajos (_), y guiones (-). No se permite ningún otro símbolo. Los nombres de cola pueden tener un máximo de 80 caracteres.
create()crea una nueva cola.-
delete()elimina todos los mensajes de la cola.Ejemplo 64.71. Ejemplo de eliminación de cola de Zend_Service_Amazon_Sqs
$sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key); $queue_url = $sqs->create('test_1'); $sqs->delete($queue_url);
-
count()obtiene el número aproximado de mensajes en la cola.Ejemplo 64.72. Ejemplo de recuento de cola de Zend_Service_Amazon_Sqs
$sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key); $queue_url = $sqs->create('test_1'); $sqs->send($queue_url, 'this is a test'); $count = $sqs->count($queue_url); // Returns '1'
-
getQueues()devuelve la lista de nombres de todas las colas que pertenecen al usuario.Ejemplo 64.73. Ejemplo de listado de colas de Zend_Service_Amazon_Sqs
$sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key); $list = $sqs->getQueues(); foreach($list as $queue) { echo "I have queue $queue\n"; }
Una vez creada una cola, se pueden enviar mensajes simples a la cola y recibirlos posteriormente. Los mensajes pueden tener hasta 8 KB de longitud. Si se necesitan mensajes más largos, consulte S3. No hay límite en el número de mensajes que puede contener una cola.
-
sent($queue_url, $message)envía el$messagea la URL de cola SQS$queue_url.Ejemplo 64.74. Ejemplo de envío de mensaje de Zend_Service_Amazon_Sqs
$sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key); $queue_url = $sqs->create('test_queue'); $sqs->send($queue_url, 'this is a test message');
-
receive($queue_url)recupera mensajes de la cola.Ejemplo 64.75. Ejemplo de recepción de mensaje de Zend_Service_Amazon_Sqs
$sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key); $queue_url = $sqs->create('test_queue'); $sqs->send($queue_url, 'this is a test message'); foreach ($sqs->receive($queue_url) as $message) { echo "got message ".$message['body'].'<br/>'; }
-
deleteMessage($queue_url, $handle)elimina un mensaje de una cola. Un mensaje primero debe ser recibido usando el métodoreceive()antes de poder ser eliminado.Ejemplo 64.76. Ejemplo de eliminación de mensaje de Zend_Service_Amazon_Sqs
$sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key); $queue_url = $sqs->create('test_queue'); $sqs->send($queue_url, 'this is a test message'); foreach ($sqs->receive($queue_url) as $message) { echo "got message ".$message['body'].'<br/>'; if ($sqs->deleteMessage($queue_url, $message['handle'])) { echo "Message deleted"; } else { echo "Message not deleted"; } }