Adapters | Zend_Queue Programmer's Reference Guide | Stomp
# Customizing Zend_Queue # Creating your own adapter Zend_Queue will accept any adapter that implements Zend_Queue_Adapter_AdapterAbstract. You can create your own adapter by extending one of the existing adapters, or the abstract class Zend_Queue_Adapter_AdapterAbstract. I suggest reviewing Zend_Queue_Adapter_Array as this adapter is the easiest to conceptualize. 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); You can also change the adapter on the fly as well. $adapter = new MyCustom_Adapter($options); $queue = new Zend_Queue($options); $queue->setAdapter($adapter); echo "Adapter: ", get_class($queue->getAdapter()), "\n"; or $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 # Creating your own message class Zend_Queue will also accept your own message class. Our variables start with an underscore. For example: class Zend_Queue_Message { protected $_data = array(); } You can extend the existing messaging class. See the example code in tests/Zend/Queue/Custom/Message.php. # Creating your own message iterator class Zend_Queue will also accept your own message iterator class. The message iterator class is used to return messages from Zend_Queue_Adapter_Abstract::recieve(). Zend_Queue_Abstract::receive() should always return a container class like Zend_Queue_Message_Iterator, even if there is only one message. See the example filename in tests/Zend/Queue/Custom/Messages.php. # Creating your own queue class Zend_Queue can also be overloaded easily. See the example filename in tests/Zend/Queue/Custom/Queue.php.
Adapters | Zend_Queue Programmer's Reference Guide | Stomp