Framework

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:

  1. $options = array(
  2.     'name'          => 'queue1',
  3.     'driverOptions' => array(
  4.         'host'      => '127.0.0.1',
  5.         'port'      => '3306',
  6.         'username'  => 'queue',
  7.         'password'  => 'queue',
  8.         'dbname'    => 'queue',
  9.         'type'      => 'pdo_mysql'
  10.     )
  11. );
  12.  
  13. // Create a database queue.
  14. // Zend_Queue will prepend Zend_Queue_Adapter_ to 'Db' for the class name.
  15. $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.

  1. $messages = $queue->receive(5);
  2. foreach ($messages as $i => $message) {
  3.     echo "$i) Message => ", $message->body, "\n";
  4. }

Any exceptions thrown are of class Zend_Queue_Exception.

Introduction

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.

Commonality among adapters

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 message

    send() is not available in all adapters; the Zend_Queue_Adapter_Null does not support send().

  • receive() - receive messages

    receive() is not available in all adapters; the Zend_Queue_Adapter_Null does not support receive().

  • 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.

blog comments powered by Disqus