TigerZF
🌐Español

57.3. Framework

Zend_Queue es un proxy que oculta los detalles de los servicios de cola. Los servicios de cola están representados por Zend_Queue_Adapter_<service>. Por ejemplo, Zend_Queue_Adapter_Db es una cola que utilizará tablas de base de datos para almacenar y recuperar mensajes.

A continuación se muestra un ejemplo de uso de tablas de base de datos para un sistema de colas:

$options = array(
    'name'          => 'queue1',
    'driverOptions' => array(
        'host'      => '127.0.0.1',
        'port'      => '3306',
        'username'  => 'queue',
        'password'  => 'queue',
        'dbname'    => 'queue',
        'type'      => 'pdo_mysql'
    )
);

// Create a database queue.
// Zend_Queue will prepend Zend_Queue_Adapter_ to 'Db' for the class name.
$queue = new Zend_Queue('Db', $options);

El constructor de Zend_Queue creará un Zend_Queue_Adapter_Db e inicializará el adaptador con la configuración indicada.

Los ajustes de configuración aceptados para cada adaptador se proporcionan en las notas del adaptador.

Zend_Queue devuelve mensajes utilizando la clase Zend_Queue_Message_Iterator, que es una implementación de SPL Iterator y Countable. Zend_Queue_Message_Iterator contiene un array de objetos Zend_Queue_Message.

$messages = $queue->receive(5);
foreach ($messages as $i => $message) {
    echo "$i) Message => ", $message->body, "\n";
}

Cualquier excepción lanzada es de la clase Zend_Queue_Exception.

57.3.1. Introducción

Zend_Queue es una clase proxy que representa un adaptador.

Los métodos send(), count($queue), y receive() son empleados por cada adaptador para interactuar con las colas.

Los métodos createQueue(), deleteQueue() se utilizan para gestionar colas.

57.3.2. Puntos en común entre adaptadores

Los servicios de cola soportados por Zend_Queue no todos admiten las mismas funciones. Por ejemplo, Zend_Queue_Adapter_Array, Zend_Queue_Adapter_Db, admiten todas las funciones, mientras que Zend_Queue_Adapter_Activemq no admite el listado de colas, la eliminación de colas, ni el conteo de mensajes.

Puede determinar qué funciones están soportadas usando Zend_Queue::isSupported() o Zend_Queue::getCapabilities().

  • createQueue() - crea una cola

  • deleteQueue() - elimina una cola

  • send() - envía un mensaje

    send() no está disponible en todos los adaptadores; Zend_Queue_Adapter_Null no admite send().

  • receive() - recibe mensajes

    receive() no está disponible en todos los adaptadores; Zend_Queue_Adapter_Null no admite receive().

  • deleteMessage() - elimina un mensaje

  • count() - cuenta el número de mensajes en una cola

  • isExists() - comprueba la existencia de una cola

Los métodos receive() son empleados por cada adaptador para interactuar con las colas.

Los métodos createQueue() y deleteQueue() se utilizan para gestionar colas.