Final Class Yiisoft\Queue\Middleware\FailureHandling\FailureMiddlewareDispatcher
| Inheritance | Yiisoft\Queue\Middleware\FailureHandling\FailureMiddlewareDispatcher |
|---|
Public Methods
| Method | Description | Defined By |
|---|---|---|
| __construct() | Yiisoft\Queue\Middleware\FailureHandling\FailureMiddlewareDispatcher | |
| dispatch() | Dispatch request through middleware to get response. | Yiisoft\Queue\Middleware\FailureHandling\FailureMiddlewareDispatcher |
| withMiddlewares() | Returns new instance with middleware handlers replaced with the ones provided. | Yiisoft\Queue\Middleware\FailureHandling\FailureMiddlewareDispatcher |
Constants
| Constant | Value | Description | Defined By |
|---|---|---|---|
| DEFAULT_PIPELINE | 'failure-pipeline-default' | Yiisoft\Queue\Middleware\FailureHandling\FailureMiddlewareDispatcher |
Method Details
| public mixed __construct ( Yiisoft\Queue\Middleware\FailureHandling\MiddlewareFactoryFailureInterface $middlewareFactory, array[][]|callable[][]|Yiisoft\Queue\Middleware\FailureHandling\MiddlewareFailureInterface[][]|string[][] $middlewareDefinitions ) | ||
| $middlewareFactory | Yiisoft\Queue\Middleware\FailureHandling\MiddlewareFactoryFailureInterface | |
| $middlewareDefinitions | array[][]|callable[][]|Yiisoft\Queue\Middleware\FailureHandling\MiddlewareFailureInterface[][]|string[][] | |
public function __construct(
private readonly MiddlewareFactoryFailureInterface $middlewareFactory,
private array $middlewareDefinitions,
) {
$this->init();
}
Dispatch request through middleware to get response.
| public Yiisoft\Queue\Middleware\FailureHandling\FailureHandlingRequest dispatch ( Yiisoft\Queue\Middleware\FailureHandling\FailureHandlingRequest $request, Yiisoft\Queue\Middleware\FailureHandling\MessageFailureHandlerInterface $finishHandler ) | ||
| $request | Yiisoft\Queue\Middleware\FailureHandling\FailureHandlingRequest |
Request to pass to middleware. |
| $finishHandler | Yiisoft\Queue\Middleware\FailureHandling\MessageFailureHandlerInterface |
Handler to use in case no middleware produced a response. |
public function dispatch(
FailureHandlingRequest $request,
MessageFailureHandlerInterface $finishHandler
): FailureHandlingRequest {
/** @var string $channel It is always string in this context */
$channel = $request->getQueue()->getChannel();
if (!isset($this->middlewareDefinitions[$channel]) || $this->middlewareDefinitions[$channel] === []) {
$channel = self::DEFAULT_PIPELINE;
}
$definitions = array_reverse($this->middlewareDefinitions[$channel]);
if (!isset($this->stack[$channel])) {
$this->stack[$channel] = new MiddlewareFailureStack($this->buildMiddlewares(...$definitions), $finishHandler);
}
return $this->stack[$channel]->handleFailure($request);
}
Returns new instance with middleware handlers replaced with the ones provided.
The last specified handler will be executed first.
| public self withMiddlewares ( array[][]|callable[][]|Yiisoft\Queue\Middleware\FailureHandling\MiddlewareFailureInterface[][]|string[][] $middlewareDefinitions ) | ||
| $middlewareDefinitions | array[][]|callable[][]|Yiisoft\Queue\Middleware\FailureHandling\MiddlewareFailureInterface[][]|string[][] |
Each array element is:
For callables typed parameters are automatically injected using dependency injection container. |
| return | self |
New instance of the {@see \Yiisoft\Queue\Middleware\FailureHandling\FailureMiddlewareDispatcher} |
|---|---|---|
public function withMiddlewares(array $middlewareDefinitions): self
{
$instance = clone $this;
$instance->middlewareDefinitions = $middlewareDefinitions;
// Fixes a memory leak.
unset($instance->stack);
$instance->stack = [];
$instance->init();
return $instance;
}
Signup or Login in order to comment.