class DatabaseQueue implements ReliableQueueInterface, QueueGarbageCollectionInterface (View source)

Default queue implementation.

Traits

Provides dependency injection friendly methods for serialization.

Constants

TABLE_NAME

The database table name.

Properties

protected array $_serviceIds

An array of service IDs keyed by property name used for serialization.

from  DependencySerializationTrait
protected array $_entityStorages

An array of entity type IDs keyed by the property name of their storages.

from  DependencySerializationTrait
protected string $name

The name of the queue this instance is working with.

protected Connection $connection

The database connection.

Methods

__sleep()

{@inheritdoc}

__wakeup()

{@inheritdoc}

__construct(string $name, Connection $connection)

Constructs a \Drupal\Core\Queue\DatabaseQueue object.

A
createItem($data)

Adds a queue item and store it directly to the queue.

A
doCreateItem($data)

Adds a queue item and store it directly to the queue.

int
numberOfItems()

Retrieves the number of items in the queue.

On
claimItem($lease_time = 30)

Claims an item in the queue for processing.

bool
releaseItem($item)

Releases an item that the worker could not process.

deleteItem($item)

Deletes a finished item from the queue.

createQueue()

Creates a queue.

deleteQueue()

Deletes a queue and every item in the queue.

garbageCollection()

Cleans queues of garbage.

ensureTableExists()

Check if the table exists and create it if not.

catchException(Exception $e)

Act on an exception when queue might be stale.

schemaDefinition()

Defines the schema for the queue table.

Details

__sleep()

{@inheritdoc}

__wakeup()

{@inheritdoc}

__construct(string $name, Connection $connection)

Constructs a \Drupal\Core\Queue\DatabaseQueue object.

Parameters

string $name

The name of the queue.

Connection $connection

The Connection object containing the key-value tables.

A createItem($data)

Adds a queue item and store it directly to the queue.

Parameters

$data

Arbitrary data to be associated with the new task in the queue.

Return Value

A

unique ID if the item was successfully created and was (best effort) added to the queue, otherwise FALSE. We don't guarantee the item was committed to disk etc, but as far as we know, the item is now in the queue.

protected A doCreateItem($data)

Adds a queue item and store it directly to the queue.

Parameters

$data

Arbitrary data to be associated with the new task in the queue.

Return Value

A

unique ID if the item was successfully created and was (best effort) added to the queue, otherwise FALSE. We don't guarantee the item was committed to disk etc, but as far as we know, the item is now in the queue.

int numberOfItems()

Retrieves the number of items in the queue.

This is intended to provide a "best guess" count of the number of items in the queue. Depending on the implementation and the setup, the accuracy of the results of this function may vary.

e.g. On a busy system with a large number of consumers and items, the result might only be valid for a fraction of a second and not provide an accurate representation.

Return Value

int

An integer estimate of the number of items in the queue.

On claimItem($lease_time = 30)

Claims an item in the queue for processing.

Parameters

$lease_time

How long the processing is expected to take in seconds, defaults to an hour. After this lease expires, the item will be reset and another consumer can claim the item. For idempotent tasks (which can be run multiple times without side effects), shorter lease times would result in lower latency in case a consumer fails. For tasks that should not be run more than once (non-idempotent), a larger lease time will make it more rare for a given task to run multiple times in cases of failure, at the cost of higher latency.

Return Value

On

success we return an item object. If the queue is unable to claim an item it returns false. This implies a best effort to retrieve an item and either the queue is empty or there is some other non-recoverable problem.

If returned, the object will have at least the following properties:

  • data: the same as what what passed into createItem().
  • item_id: the unique ID returned from createItem().
  • created: timestamp when the item was put into the queue.

bool releaseItem($item)

Releases an item that the worker could not process.

Another worker can come in and process it before the timeout expires.

Parameters

$item

The item returned by \Drupal\Core\Queue\QueueInterface::claimItem().

Return Value

bool

TRUE if the item has been released, FALSE otherwise.

deleteItem($item)

Deletes a finished item from the queue.

Parameters

$item

The item returned by \Drupal\Core\Queue\QueueInterface::claimItem().

createQueue()

Creates a queue.

Called during installation and should be used to perform any necessary initialization operations. This should not be confused with the constructor for these objects, which is called every time an object is instantiated to operate on a queue. This operation is only needed the first time a given queue is going to be initialized (for example, to make a new database table or directory to hold tasks for the queue -- it depends on the queue implementation if this is necessary at all).

deleteQueue()

Deletes a queue and every item in the queue.

garbageCollection()

Cleans queues of garbage.

protected ensureTableExists()

Check if the table exists and create it if not.

protected catchException(Exception $e)

Act on an exception when queue might be stale.

If the table does not yet exist, that's fine, but if the table exists and yet the query failed, then the queue is stale and the exception needs to propagate.

Parameters

Exception $e

The exception.

Exceptions

Exception

schemaDefinition()

internal  
 

Defines the schema for the queue table.