The Zend_Queue
is a proxy that hides the details
of the queue services. The queue services are represented by
Zend_Queue_Adapter_<service>
. For example,
Zend_Queue_Adapter_Db
is a queue that will use
database tables to store and retrieve messages.
Below is an example for using database tables for a queuing system:
$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);
The Zend_Queue
constructor will create a
Zend_Queue_Adapter_Db
and initialize the adapter
with the configuration settings.
The accepted configuration settings for each adapter are provided in the adapter notes.
Zend_Queue
returns messages using the class
Zend_Queue_Message_Iterator
, which is an
implementation of SPL Iterator
and
Countable
.
Zend_Queue_Message_Iterator
contains an array of
Zend_Queue_Message
objects.
$messages = $queue->receive(5); foreach ($messages as $i => $message) { echo "$i) Message => ", $message->body, "\n"; }
Any exceptions thrown are of class
Zend_Queue_Exception
.
Zend_Queue
is a proxy class that represents
an adapter.
The send()
,
count($queue)
, and
receive()
methods are employed by each
adapter to interact with queues.
The createQueue()
,
deleteQueue()
methods are used to manage
queues.
The queue services supported by Zend_Queue
do
not all support the same functions. For example,
Zend_Queue_Adapter_Array
,
Zend_Queue_Adapter_Db
, support all functions,
while Zend_Queue_Adapter_Activemq
does not
support queue listing, queue deletion, or counting of messages.
You can determine what functions are supported by using
Zend_Queue::isSupported()
or
Zend_Queue::getCapabilities()
.
-
createQueue()
- create a queue -
deleteQueue()
- delete a queue -
send()
- send a messagesend()
is not available in all adapters; theZend_Queue_Adapter_Null
does not supportsend()
. -
receive()
- receive messagesreceive()
is not available in all adapters; theZend_Queue_Adapter_Null
does not supportreceive()
. -
deleteMessage()
- delete a message -
count()
- count the number of messages in a queue -
isExists()
- checks the existence of a queue
receive()
methods are employed by each
adapter to interact with queues.
The createQueue()
and
deleteQueue()
methods are used to manage
queues.