Programmer's Reference Guide
| Adapters |
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.
- */
- }
- 'name' => 'queue1',
- '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.
or
- 'name' => 'queue1',
- 'namespace' => 'Custom',
- '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
- {
- }
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 |
