Zend_Queue aceptará cualquier adaptador que
implemente
Zend_Queue_Adapter_AdapterAbstract. Puede
crear su propio adaptador extendiendo uno de los adaptadores
existentes, o la clase abstracta
Zend_Queue_Adapter_AdapterAbstract. Se
sugiere revisar Zend_Queue_Adapter_Array, ya que
este adaptador es el más fácil de conceptualizar.
class Custom_DbForUpdate extends Zend_Queue_Adapter_Db
{
/**
* @see code in tests/Zend/Queue/Custom/DbForUpdate.php
*
* Custom_DbForUpdate uses the SELECT ... FOR UPDATE to find it's rows.
* this is more likely to produce the wanted rows than the existing code.
*
* However, not all databases have SELECT ... FOR UPDATE as a feature.
*
* Note: this was later converted to be an option for Zend_Queue_Adapter_Db
*
* This code still serves as a good example.
*/
}
$options = array(
'name' => 'queue1',
'driverOptions' => array(
'host' => '127.0.0.1',
'port' => '3306',
'username' => 'queue',
'password' => 'queue',
'dbname' => 'queue',
'type' => 'pdo_mysql'
)
);
$adapter = new Custom_DbForUpdate($options);
$queue = new Zend_Queue($adapter, $options);
También puede cambiar el adaptador sobre la marcha.
$adapter = new MyCustom_Adapter($options); $queue = new Zend_Queue($options); $queue->setAdapter($adapter); echo "Adapter: ", get_class($queue->getAdapter()), "\n";
o
$options = array(
'name' => 'queue1',
'namespace' => 'Custom',
'driverOptions' => array(
'host' => '127.0.0.1',
'port' => '3306',
'username' => 'queue',
'password' => 'queue',
'dbname' => 'queue',
'type' => 'pdo_mysql'
)
);
$queue = new Zend_Queue('DbForUpdate', $config); // loads Custom_DbForUpdate
Zend_Queue también aceptará su propia clase de mensaje.
Nuestras variables empiezan con un guion bajo. Por ejemplo:
class Zend_Queue_Message
{
protected $_data = array();
}
Puede extender la clase de mensajería existente. Vea el código de ejemplo en
tests/Zend/Queue/Custom/Message.php.
Zend_Queue también aceptará su propia clase de iterador
de mensajes. La clase de iterador de mensajes se usa para devolver
mensajes desde
Zend_Queue_Adapter_Abstract::recieve().
Zend_Queue_Abstract::receive() siempre debería
devolver una clase contenedora como
Zend_Queue_Message_Iterator, incluso si solo hay
un mensaje.
Vea el nombre de archivo de ejemplo en
tests/Zend/Queue/Custom/Messages.php.