Zend_Queue soporta todas las colas que implementen la
interfaz Zend_Queue_Adapter_AdapterInterface.
Se soportan los siguientes servicios de colas de mensajes:
Una cola basada en base de datos mediante
Zend_Db.Una cola MemcacheQ gestionada mediante
Memcache.La cola de trabajos de Zend Platform.
Un array local. Útil para pruebas unitarias.
Si se indica un ajuste predeterminado, entonces el parámetro es opcional. Si no se especifica un ajuste predeterminado, entonces el parámetro es obligatorio.
Las opciones listadas aquí son requisitos conocidos. No todos los servidores de mensajería requieren nombre de usuario o contraseña.
-
$options['name'] = '/temp/queue1';
Este es el nombre de la cola que se desea empezar a usar. (Obligatorio)
-
$options['driverOptions']['host'] = 'host.domain.tld';
$options['driverOptions']['host'] = '127.0.0.1';
Puede establecer host con una dirección IP o un nombre de host.
El ajuste predeterminado para host es '127.0.0.1'.
-
$options['driverOptions']['port'] = 61613;
El ajuste predeterminado para port es 61613.
-
$options['driverOptions']['username'] = 'username';
Opcional para algunos servidores de mensajería. Lea el manual de su servidor de mensajería.
-
$options['driverOptions']['password'] = 'password';
Opcional para algunos servidores de mensajería. Lea el manual de su servidor de mensajería.
-
$options['driverOptions']['timeout_sec'] = 2;
$options['driverOptions']['timeout_usec'] = 0;
Esta es la cantidad de tiempo que
Zend_Queue_Adapter_Activemqesperará por actividad de lectura en un socket antes de devolver ningún mensaje.
Las opciones del controlador se comprueban para verificar algunas opciones
obligatorias como type, host,
username, password,
y dbname. Puede pasar
parámetros adicionales para Zend_DB::factory() como parámetros
en $options['driverOptions']. Un ejemplo de una opción
adicional no listada aquí, pero que podría pasarse, sería port.
$options = array(
'driverOptions' => array(
'host' => 'db1.domain.tld',
'username' => 'my_username',
'password' => 'my_password',
'dbname' => 'messaging',
'type' => 'pdo_mysql',
'port' => 3306, // optional parameter.
),
'options' => array(
// use Zend_Db_Select for update, not all databases can support this
// feature.
Zend_Db_Select::FOR_UPDATE => true
)
);
// Create a database queue.
$queue = new Zend_Queue('Db', $options);
-
$options['name'] = 'queue1';
Este es el nombre de la cola que se desea empezar a usar. (Obligatorio)
-
$options['driverOptions']['type'] = 'Pdo';
type es el adaptador que desea que
Zend_Db::factory()use. Este es el primer parámetro de la llamada al método de claseZend_Db::factory(). -
$options['driverOptions']['host'] = 'host.domain.tld';
$options['driverOptions']['host'] = '127.0.0.1';
Puede establecer host con una dirección IP o un nombre de host.
El ajuste predeterminado para host es '127.0.0.1'.
$options['driverOptions']['username'] = 'username';
$options['driverOptions']['password'] = 'password';
-
$options['driverOptions']['dbname'] = 'dbname';
El nombre de la base de datos para la cual ha creado las tablas requeridas. Vea la sección de notas a continuación.
-
$options['name'] = 'queue1';
Este es el nombre de la cola que se desea empezar a usar. (Obligatorio)
-
$options['driverOptions']['host'] = 'host.domain.tld';
$options['driverOptions']['host'] = '127.0.0.1;'
Puede establecer host con una dirección IP o un nombre de host.
El ajuste predeterminado para host es '127.0.0.1'.
-
$options['driverOptions']['port'] = 22201;
El ajuste predeterminado para port es 22201.
-
$options['daemonOptions']['host'] = '127.0.0.1:10003';
El nombre de host y el puerto correspondientes al daemon de Zend Platform Job Queue que va a usar. (Obligatorio)
-
$options['daemonOptions']['password'] = '1234';
La contraseña requerida para acceder al daemon de Zend Platform Job Queue. (Obligatorio)
Los siguientes adaptadores tienen notas:
La duración de visibilidad para
Zend_Queue_Adapter_Activemq no está
disponible.
Aunque el ActiveMQ de Apache soporta múltiples suscripciones,
Zend_Queue no lo hace. Debe crear un
nuevo objeto Zend_Queue para cada suscripción
individual.
Los nombres de cola/tema de ActiveMQ deben comenzar con uno de los siguientes:
/queue//topic//temp-queue//temp-topic/
Por ejemplo: /queue/testing
No se soportan las siguientes funciones:
create()- crear cola. Llamar a esta función lanzará una excepción.delete()- eliminar cola. Llamar a esta función lanzará una excepción.getQueues()- listar colas. Llamar a esta función lanzará una excepción.
La sentencia SQL de base de datos CREATE TABLE ( ... ) se
puede encontrar en Zend/Queue/Adapter/Db/mysql.sql.
Memcache se puede descargar desde http://www.danga.com/memcached/.
MemcacheQ se puede descargar desde http://memcachedb.org/memcacheq/.
deleteMessage()- Los mensajes se eliminan al recibirse de la cola. Llamar a esta función no tendría efecto. Llamar a esta función lanzará un error.count()ocount($adapter)- MemcacheQ no soporta un método para contar el número de elementos en una cola. Llamar a esta función lanzará un error.
Job Queue es una característica de la oferta de soluciones empresariales de Zend Platform. No es una cola de mensajes tradicional, sino que permite poner en cola un script para su ejecución, junto con los parámetros que desea pasarle. Puede obtener más información sobre Job Queue en el sitio web de zend.com.
A continuación se muestra una lista de métodos en los que el comportamiento de este adaptador diverge de las ofertas estándar:
create()- Zend Platform no tiene el concepto de colas discretas; en su lugar, permite a los administradores proporcionar scripts para procesar trabajos. Dado que agregar nuevos scripts está restringido a la interfaz de administración, este método simplemente lanza una excepción indicando que la acción está prohibida.isExists()- Al igual quecreate(), dado que Job Queue no tiene una noción de colas con nombre, este método lanza una excepción al invocarse.delete()- similar acreate(), la eliminación de scripts de JQ no es posible excepto a través de la interfaz de administración; este método lanza una excepción.getQueues()- Zend Platform no permite la introspección de los scripts de manejo de trabajos adjuntos a través de la API. Este método lanza una excepción.count()- devuelve el número total de trabajos actualmente activos en la Job Queue.-
send()- este método es quizás el que más diverge de otros adaptadores. El argumento$messagepuede ser uno de tres tipos posibles, y operará de forma diferente según el valor pasado:string - el nombre de un script registrado con Job Queue para invocar. Si se pasa de esta forma, no se proporcionan argumentos al script.
-
array - un array de valores con los que configurar un objeto
ZendApi_Job. Estos pueden incluir lo siguiente:script- el nombre del script de Job Queue a invocar. (Obligatorio)priority- la prioridad del trabajo a usar al registrarse con la cola.name- una cadena corta que describe el trabajo.predecessor- el ID de un trabajo del que este depende, y que debe ejecutarse antes de que este pueda comenzar.preserved- si se debe conservar o no el trabajo dentro del historial de Job Queue. Por defecto, desactivado; pase un valorTRUEpara conservarlo.user_variables- un array asociativo de todas las variables que desea tener en el ámbito durante la ejecución del trabajo (similar a los argumentos con nombre).interval- con qué frecuencia, en segundos, debe ejecutarse el trabajo. Por defecto, se establece en 0, lo que indica que debe ejecutarse una sola vez.end_time- una hora de expiración, después de la cual el trabajo no debe ejecutarse. Si el trabajo se configuró para ejecutarse solo una vez, yend_timeya pasó, entonces el trabajo no se ejecutará. Si el trabajo se configuró para ejecutarse en un intervalo, no se ejecutará de nuevo una vez queend_timehaya pasado.schedule_time- una marca de tiempo UNIX que indica cuándo ejecutar el trabajo; por defecto, 0, lo que indica que el trabajo debe ejecutarse lo antes posible.application_id- el identificador de la aplicación del trabajo. Por defecto, este esNULL, lo que indica que se asignará uno automáticamente por la cola, si a la cola se le asignó un ID de aplicación.
Como se indicó, solo el argumento
scriptes obligatorio; todos los demás simplemente están disponibles para permitir pasar detalles más precisos sobre cómo y cuándo ejecutar el trabajo. ZendApi_Job- finalmente, puede simplemente pasar una instancia deZendApi_Job, y se pasará directamente a la Job Queue de Platform.
En todos los casos,
send()devuelve un objetoZend_Queue_Message_PlatformJob, que proporciona acceso al objetoZendApi_Jobusado para comunicarse con Job Queue. receive()- recupera una lista de trabajos activos de Job Queue. Cada trabajo en el conjunto devuelto será una instancia deZend_Queue_Message_PlatformJob.deleteMessage()- dado que este adaptador solo funciona con Job Queue, este método espera que el$messageproporcionado sea una instancia deZend_Queue_Message_PlatformJob, y lanzará una excepción en caso contrario.
![[Note]](images/note.png)