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.
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.
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 coladeleteQueue()- elimina una cola-
send()- envía un mensajesend()no está disponible en todos los adaptadores;Zend_Queue_Adapter_Nullno admitesend(). -
receive()- recibe mensajesreceive()no está disponible en todos los adaptadores;Zend_Queue_Adapter_Nullno admitereceive(). deleteMessage()- elimina un mensajecount()- cuenta el número de mensajes en una colaisExists()- 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.