0 follower

Final Class Yiisoft\Queue\AMQP\Middleware\DelayMiddleware

InheritanceYiisoft\Queue\AMQP\Middleware\DelayMiddleware
ImplementsYiisoft\Queue\Middleware\Push\Implementation\DelayMiddlewareInterface

Method Details

Hide inherited methods

__construct() public method

public mixed __construct ( float $delayInSeconds, boolean $forcePersistentMessages true )
$delayInSeconds float
$forcePersistentMessages boolean

                public function __construct(private float $delayInSeconds, private readonly bool $forcePersistentMessages = true)
{
}

            
getDelay() public method

public float getDelay ( )

                public function getDelay(): float
{
    return $this->delayInSeconds;
}

            
processPush() public method

public \Yiisoft\Queue\Middleware\Push\PushRequest processPush ( \Yiisoft\Queue\Middleware\Push\PushRequest $request, \Yiisoft\Queue\Middleware\Push\MessageHandlerPushInterface $handler )
$request \Yiisoft\Queue\Middleware\Push\PushRequest
$handler \Yiisoft\Queue\Middleware\Push\MessageHandlerPushInterface

                public function processPush(PushRequest $request, MessageHandlerPushInterface $handler): PushRequest
{
    $adapter = $request->getAdapter();
    if (!$adapter instanceof Adapter) {
        $type = get_debug_type($adapter);
        $class = Adapter::class;
        throw new InvalidArgumentException(
            "This middleware works only with the $class. $type given."
        );
    }
    if ($adapter->getQueueProvider()->getExchangeSettings() === null) {
        throw new InvalidArgumentException('Message cannot be delayed to a queue without an exchange. Exchange is mandatory.');
    }
    $queueProvider = $adapter->getQueueProvider();
    $exchangeSettings = $this->getExchangeSettings($queueProvider->getExchangeSettings());
    $queueSettings = $this->getQueueSettings($queueProvider->getQueueSettings(), $queueProvider->getExchangeSettings());
    $adapter = $adapter->withQueueProvider(
        $queueProvider
            ->withMessageProperties($this->getMessageProperties($queueProvider))
            ->withExchangeSettings($exchangeSettings)
            ->withQueueSettings($queueSettings)
    );
    return $handler->handlePush($request->withAdapter($adapter));
}

            
withDelay() public method

public $this withDelay ( float $seconds )
$seconds float

                public function withDelay(float $seconds): self
{
    $new = clone $this;
    $new->delayInSeconds = $seconds;
    return $new;
}