TigerZF
🌐Español

64.36. Zend_Service_WindowsAzure_Storage_Queue

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.

64.36.1. Ejemplos de la API

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.

64.36.1.1. Creación de una cola

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;

64.36.1.2. Eliminación de una cola

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');

64.36.1.3. Añadir un mensaje a una cola

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);

64.36.1.4. Lectura de un mensaje de una cola

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);
}

64.36.1.5. Comprobar si hay mensajes en una cola

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.