SuspendQueueException.php

Same filename and directory in other branches
  1. 9 core/lib/Drupal/Core/Queue/SuspendQueueException.php
  2. 8.9.x core/lib/Drupal/Core/Queue/SuspendQueueException.php
  3. 10 core/lib/Drupal/Core/Queue/SuspendQueueException.php

Namespace

Drupal\Core\Queue

File

core/lib/Drupal/Core/Queue/SuspendQueueException.php

View source
<?php

namespace Drupal\Core\Queue;


/**
 * Exception class to throw to indicate that a cron queue should be skipped.
 *
 * An implementation of \Drupal\Core\Queue\QueueWorkerInterface::processItem()
 * throws this class of exception to indicate that processing of the whole queue
 * should be skipped. This should be thrown rather than a normal Exception if
 * the problem encountered by the queue worker is such that it can be deduced
 * that workers of subsequent items would encounter it too. For example, if a
 * remote site that the queue worker depends on appears to be inaccessible.
 */
class SuspendQueueException extends \RuntimeException {
    
    /**
     * Seconds to wait before resuming the queue, or NULL if unknown.
     *
     * @var float|null
     */
    protected $delay = NULL;
    
    /**
     * Constructs a SuspendQueueException.
     *
     * @param string $message
     *   The error message.
     * @param int $code
     *   The error code.
     * @param \Throwable|null $previous
     *   The previous throwable used for the exception chaining.
     * @param float|null $delay
     *   If the time for when the queue will be ready to resume processing is
     *   known, pass an interval in seconds. Otherwise NULL if the time to resume
     *   processing the queue is not known.
     */
    public function __construct(string $message = '', int $code = 0, ?\Throwable $previous = NULL, ?float $delay = NULL) {
        parent::__construct($message, $code, $previous);
        $this->delay = $delay;
    }
    
    /**
     * Get the desired delay interval for this item.
     *
     * @return float|null
     *   If the time for when the queue will be ready to resume processing is
     *   known, pass an interval in seconds. Otherwise NULL if the time to resume
     *   processing the queue is not known.
     */
    public function getDelay() : ?float {
        return $this->delay;
    }
    
    /**
     * Determine whether the next time the queue should be checked is known.
     *
     * @return bool
     *   Whether the time to resume processing the queue is known.
     */
    public function isDelayable() : bool {
        return isset($this->delay);
    }

}

Classes

Title Deprecated Summary
SuspendQueueException Exception class to throw to indicate that a cron queue should be skipped.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.