0

Final Class Yiisoft\Queue\Middleware\FailureHandling\FailureMiddlewareDispatcher

InheritanceYiisoft\Queue\Middleware\FailureHandling\FailureMiddlewareDispatcher

Constants

Hide inherited constants

Constant Value Description Defined By
DEFAULT_PIPELINE 'failure-pipeline-default' Yiisoft\Queue\Middleware\FailureHandling\FailureMiddlewareDispatcher

Method Details

Hide inherited methods

__construct() public method

public mixed __construct ( Yiisoft\Queue\Middleware\FailureHandling\FailureMiddlewareFactoryInterface $middlewareFactory, array[][]|callable[][]|\Yiisoft\Queue\Middleware\FailureHandling\FailureMiddlewareInterface[][]|string[][] $middlewareDefinitions )
$middlewareFactory Yiisoft\Queue\Middleware\FailureHandling\FailureMiddlewareFactoryInterface
$middlewareDefinitions array[][]|callable[][]|\Yiisoft\Queue\Middleware\FailureHandling\FailureMiddlewareInterface[][]|string[][]

                public function __construct(
    private readonly FailureMiddlewareFactoryInterface $middlewareFactory,
    array $middlewareDefinitions,
) {
    $middlewareDefinitions[self::DEFAULT_PIPELINE] ??= [];
    $this->middlewareDefinitions = $middlewareDefinitions;
}

            
dispatch() public method

Dispatch request through middleware to get response.

public Yiisoft\Queue\Middleware\FailureHandling\FailureHandlingRequest dispatch ( Yiisoft\Queue\Middleware\FailureHandling\FailureHandlingRequest $request, Yiisoft\Queue\Middleware\FailureHandling\FailureHandlerInterface $finalHandler )
$request Yiisoft\Queue\Middleware\FailureHandling\FailureHandlingRequest

Request to pass to middleware.

$finalHandler Yiisoft\Queue\Middleware\FailureHandling\FailureHandlerInterface

Handler to use in case no middleware produced a response.

                public function dispatch(
    FailureHandlingRequest $request,
    FailureHandlerInterface $finalHandler,
): FailureHandlingRequest {
    $queueName = $request->getQueueName();
    if (!isset($this->middlewareDefinitions[$queueName]) || $this->middlewareDefinitions[$queueName] === []) {
        $queueName = self::DEFAULT_PIPELINE;
    }
    $definitions = array_reverse($this->middlewareDefinitions[$queueName]);
    $this->stack[$queueName] ??= new FailureMiddlewareStack($this->buildMiddlewares(...$definitions), $finalHandler);
    return $this->stack[$queueName]->handleFailure($request);
}