El servicio Queue almacena mensajes que pueden ser leídos por cualquier cliente que tenga acceso a la cuenta de almacenamiento.
Una cola puede contener un número ilimitado de mensajes, cada uno de los cuales puede tener hasta 8 KB de tamaño. Los mensajes generalmente se añaden al final de la cola y se recuperan desde el principio de la cola, aunque no se garantiza el comportamiento primero en entrar, primero en salir (FIFO). Si necesitas almacenar mensajes de más de 8 KB, puedes almacenar los datos del mensaje en una cola o en una tabla y luego almacenar una referencia a los datos como mensaje en una cola.
Queue Storage es ofrecido por Windows Azure como una API
REST que es envuelta por la clase
Zend_Service_WindowsAzure_Storage_Queue con el fin de
proporcionar una interfaz nativa de PHP para la cuenta de
almacenamiento.
Este tema enumera algunos ejemplos de uso de la clase
Zend_Service_WindowsAzure_Storage_Queue. Otras funcionalidades
están disponibles en el paquete de descarga, así como una documentación detallada de la
API de esas funcionalidades.
Utilizando el siguiente código, se puede crear una cola en el almacenamiento de desarrollo.
Ejemplo 64.167. Creación de una cola
$storageClient = new Zend_Service_WindowsAzure_Storage_Queue();
$result = $storageClient->createQueue('testqueue');
echo 'Queue name is: ' . $result->Name;
Utilizando el siguiente código, se puede eliminar una cola del almacenamiento de desarrollo.
Ejemplo 64.168. Eliminación de una cola
$storageClient = new Zend_Service_WindowsAzure_Storage_Queue();
$storageClient->deleteQueue('testqueue');
Utilizando el siguiente código, se puede añadir un mensaje a una cola en el almacenamiento de desarrollo. Ten en cuenta que la cola ya se ha creado previamente.
Ejemplo 64.169. Añadir un mensaje a una cola
$storageClient = new Zend_Service_WindowsAzure_Storage_Queue();
// 3600 = time-to-live of the message, if omitted defaults to 7 days
$storageClient->putMessage('testqueue', 'This is a test message', 3600);
Utilizando el siguiente código, se puede leer un mensaje de una cola en el almacenamiento de desarrollo. Ten en cuenta que la cola y el mensaje ya se han creado previamente.
Ejemplo 64.170. Lectura de un mensaje de una cola
$storageClient = new Zend_Service_WindowsAzure_Storage_Queue();
// retrieve 10 messages at once
$messages = $storageClient->getMessages('testqueue', 10);
foreach ($messages as $message) {
echo $message->MessageText . "\r\n";
}
Los mensajes que se leen usando getMessages() serán
invisibles en la cola durante 30 segundos, tras los cuales los mensajes reaparecerán en
la cola. Para marcar un mensaje como procesado y eliminarlo de la cola, utiliza el
método deleteMessage().
Ejemplo 64.171. Marcar un mensaje como procesado
$storageClient = new Zend_Service_WindowsAzure_Storage_Queue();
// retrieve 10 messages at once
$messages = $storageClient->getMessages('testqueue', 10);
foreach ($messages as $message) {
echo $message . "\r\n";
// Mark the message as processed
$storageClient->deleteMessage('testqueue', $message);
}
Utilizando el siguiente código, se puede comprobar si una cola tiene nuevos mensajes. Ten en cuenta que la cola y el mensaje ya se han creado previamente.
Ejemplo 64.172. Comprobar si hay mensajes en una cola
$storageClient = new Zend_Service_WindowsAzure_Storage_Queue();
// retrieve 10 messages at once
$messages = $storageClient->peekMessages('testqueue', 10);
foreach ($messages as $message) {
echo $message->MessageText . "\r\n";
}
Ten en cuenta que los mensajes que se leen usando peekMessages()
no se volverán invisibles en la cola, ni pueden marcarse como procesados usando el
método deleteMessage(). Para hacerlo, utiliza
getMessages() en su lugar.