Package Home

Zend Framework 2 Documentation (Manual)

PHK Home

File: /modules/zendqueue.adapters.html

Size:28504
Storage flags:no_autoload,compress/gzip (23%)

Adapters — Zend Framework 2 2.4.2 documentation

Adapters

ZendQueue\Queue supports all queues implementing the interface Zend\Queue\Adapter\AdapterInterface. The following Message Queue services are supported:

Note

Limitations

Message transaction handling is not supported.

Specific Adapters - Configuration settings

If a default setting is indicated then the parameter is optional. If a default setting is not specified then the parameter is required.

Apache ActiveMQ - ZendQueueAdapterActivemq

Options listed here are known requirements. Not all messaging servers require username or password.

  • $options[‘name’] = ‘/temp/queue1’;

    This is the name of the queue that you wish to start using. (Required)

  • $options[‘driverOptions’][‘host’] = ‘host.domain.tld’;

    $options[‘driverOptions’][‘host’] = ‘127.0.0.1’;

    You may set host to an IP address or a hostname.

    Default setting for host is ‘127.0.0.1’.

  • $options[‘driverOptions’][‘port’] = 61613;

    Default setting for port is 61613.

  • $options[‘driverOptions’][‘username’] = ‘username’;

    Optional for some messaging servers. Read the manual for your messaging server.

  • $options[‘driverOptions’][‘password’] = ‘password’;

    Optional for some messaging servers. Read the manual for your messaging server.

  • $options[‘driverOptions’][‘timeout_sec’] = 2;

    $options[‘driverOptions’][‘timeout_usec’] = 0;

    This is the amount of time that Zend\Queue\Adapter\Activemq will wait for read activity on a socket before returning no messages.

Db - ZendQueueAdapterDb

Driver options are checked for a few required options such as type, host, username, password, and dbname. You may pass along additional parameters for Zend\DB\DB::factory() as parameters in $options['driverOptions']. An example of an additional option not listed here, but could be passed would be port.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
$options = array(
    'driverOptions' => array(
        'host'      => 'db1.domain.tld',
        'username'  => 'my_username',
        'password'  => 'my_password',
        'dbname'    => 'messaging',
        'type'      => 'pdo_mysql',
        'port'      => 3306, // optional parameter.
    ),
    'options' => array(
        // use Zend\Db\Select for update, not all databases can support this
        // feature.
        Zend\Db\Select::FOR_UPDATE => true
    )
);

// Create a database queue.
$queue = new Zend\Queue\Queue('Db', $options);
  • $options[‘name’] = ‘queue1’;

    This is the name of the queue that you wish to start using. (Required)

  • $options[‘driverOptions’][‘type’] = ‘Pdo’;

    type is the adapter you wish to have Zend\Db\Db::factory() use. This is the first parameter for the Zend\Db\Db::factory() class method call.

  • $options[‘driverOptions’][‘host’] = ‘host.domain.tld’;

    $options[‘driverOptions’][‘host’] = ‘127.0.0.1’;

    You may set host to an IP address or a hostname.

    Default setting for host is ‘127.0.0.1’.

  • $options[‘driverOptions’][‘username’] = ‘username’;

  • $options[‘driverOptions’][‘password’] = ‘password’;

  • $options[‘driverOptions’][‘dbname’] = ‘dbname’;

    The database name that you have created the required tables for. See the notes section below.

MemcacheQ - ZendQueueAdapterMemcacheq

  • $options[‘name’] = ‘queue1’;

    This is the name of the queue that you wish to start using. (Required)

  • $options[‘driverOptions’][‘host’] = ‘host.domain.tld’;

    $options[‘driverOptions’][‘host’] = ‘127.0.0.1;’

    You may set host to an IP address or a hostname.

    Default setting for host is ‘127.0.0.1’.

  • $options[‘driverOptions’][‘port’] = 22201;

    The default setting for port is 22201.

Zend Platform Job Queue - ZendQueueAdapterPlatformJobQueue

  • $options[‘daemonOptions’][‘host’] = ‘127.0.0.1:10003’;

    The hostname and port corresponding to the Zend Platform Job Queue daemon you will use. (Required)

  • $options[‘daemonOptions’][‘password’] = ‘1234’;

    The password required for accessing the Zend Platform Job Queue daemon. (Required)

Array - ZendQueueAdapterArray

  • $options[‘name’] = ‘queue1’;

    This is the name of the queue that you wish to start using. (Required)

Notes for Specific Adapters

The following adapters have notes:

Apache ActiveMQ

Visibility duration for Zend\Queue\Adapter\Activemq is not available.

While Apache’s ActiveMQ will support multiple subscriptions, the ZendQueue\Queue does not. You must create a new ZendQueue\Queue object for each individual subscription.

ActiveMQ queue/topic names must begin with one of:

  • /queue/
  • /topic/
  • /temp-queue/
  • /temp-topic/

For example: /queue/testing

The following functions are not supported:

  • create()- create queue. Calling this function will throw an exception.
  • delete()- delete queue. Calling this function will throw an exception.
  • getQueues()- list queues. Calling this function will throw an exception.

ZendDb

The database CREATE TABLE ( ... ) SQL statement can be found in Zend/Queue/Adapter/Db/mysql.sql.

MemcacheQ

Memcache can be downloaded from http://www.danga.com/memcached/.

MemcacheQ can be downloaded from http://memcachedb.org/memcacheq/.

  • deleteMessage()- Messages are deleted upon reception from the queue. Calling this function would have no effect. Calling this function will throw an error.
  • count() or count($adapter)- MemcacheQ does not support a method for counting the number of items in a queue. Calling this function will throw an error.

Zend Platform Job Queue

Job Queue is a feature of Zend Platform’s Enterprise Solution offering. It is not a traditional message queue, and instead allows you to queue a script to execute, along with the parameters you wish to pass to it. You can find out more about Job Queue on the zend.com website.

The following is a list of methods where this adapter’s behavior diverges from the standard offerings:

  • create()- Zend Platform does not have the concept of discrete queues; instead, it allows administrators to provide scripts for processing jobs. Since adding new scripts is restricted to the administration interface, this method simply throws an exception indicating the action is forbidden.

  • isExists()- Just like create(), since Job Queue does not have a notion of named queues, this method throws an exception when invoked.

  • delete()- similar to create(), deletion of JQ scripts is not possible except via the admin interface; this method raises an exception.

  • getQueues()- Zend Platform does not allow introspection into the attached job handling scripts via the API. This method throws an exception.

  • count()- returns the total number of jobs currently active in the Job Queue.

  • send()- this method is perhaps the one method that diverges most from other adapters. The $message argument may be one of three possible types, and will operate differently based on the value passed:

    • string- the name of a script registered with Job Queue to invoke. If passed in this way, no arguments are provided to the script.

    • array- an array of values with which to configure a ZendApi\Job object. These may include the following:

      • script- the name of the Job Queue script to invoke. (Required)
      • priority- the job priority to use when registering with the queue.
      • name- a short string describing the job.
      • predecessor- the ID of a job on which this one depends, and which must be executed before this one may begin.
      • preserved- whether or not to retain the job within the Job Queue history. By default, off; pass a TRUE value to retain it.
      • user_variables- an associative array of all variables you wish to have in scope during job execution (similar to named arguments).
      • interval- how often, in seconds, the job should run. By default, this is set to 0, indicating it should run once, and once only.
      • end_time- an expiry time, past which the job should not run. If the job was set to run only once, and end_time has passed, then the job will not be executed. If the job was set to run on an interval, it will not execute again once end_time has passed.
      • schedule_time- a UNIX timestamp indicating when to run the job; by default, 0, indicating the job should run as soon as possible.
      • application_id- the application identifier of the job. By default, this is NULL, indicating that one will be automatically assigned by the queue, if the queue was assigned an application ID.

      As noted, only the script argument is required; all others are simply available to allow passing more fine-grained detail on how and when to run the job.

    • ZendApi\Job- finally, you may simply pass a ZendApi\Job instance, and it will be passed along to Platform’s Job Queue.

    In all instances, send() returns a Zend\Queue\Message\PlatformJob object, which provides access to the ZendApi\Job object used to communicate with Job Queue.

  • receive()- retrieves a list of active jobs from Job Queue. Each job in the returned set will be an instance of Zend\Queue\Message\PlatformJob.

  • deleteMessage()- since this adapter only works with Job Queue, this method expects the provided $message to be a Zend\Queue\Message\PlatformJob instance, and will throw an exception otherwise.

Array (local)

The Array queue is a PHP array() in local memory. The Zend\Queue\Adapter\Array is good for unit testing.

Edit this document

Edit this document

The source code of this file is hosted on GitHub. Everyone can update and fix errors in this document with few clicks - no downloads needed.

  1. Login with your GitHub account.
  2. Go to Adapters on GitHub.
  3. Edit file contents using GitHub's text editor in your web browser
  4. Fill in the Commit message text box at the end of the page telling why you did the changes. Press Propose file change button next to it when done.
  5. On Send a pull request page you don't need to fill in text anymore. Just press Send pull request button.
  6. Your changes are now queued for review under project's Pull requests tab on GitHub.

For more information about the PHK package format: http://phk.tekwire.net