Final Class Yiisoft\Queue\Middleware\Consume\ConsumeMiddlewareDispatcher
| Inheritance | Yiisoft\Queue\Middleware\Consume\ConsumeMiddlewareDispatcher |
|---|
Public Methods
| Method | Description | Defined By |
|---|---|---|
| __construct() | Yiisoft\Queue\Middleware\Consume\ConsumeMiddlewareDispatcher | |
| dispatch() | Dispatch request through middleware to get response. | Yiisoft\Queue\Middleware\Consume\ConsumeMiddlewareDispatcher |
| hasMiddlewares() | Yiisoft\Queue\Middleware\Consume\ConsumeMiddlewareDispatcher | |
| withMiddlewares() | Returns new instance with middleware handlers replaced with the ones provided. | Yiisoft\Queue\Middleware\Consume\ConsumeMiddlewareDispatcher |
Method Details
| public mixed __construct ( Yiisoft\Queue\Middleware\Consume\MiddlewareFactoryConsumeInterface $middlewareFactory, array|callable|string|Yiisoft\Queue\Middleware\Consume\MiddlewareConsumeInterface $middlewareDefinitions ) | ||
| $middlewareFactory | Yiisoft\Queue\Middleware\Consume\MiddlewareFactoryConsumeInterface | |
| $middlewareDefinitions | array|callable|string|Yiisoft\Queue\Middleware\Consume\MiddlewareConsumeInterface | |
public function __construct(
private readonly MiddlewareFactoryConsumeInterface $middlewareFactory,
array|callable|string|MiddlewareConsumeInterface ...$middlewareDefinitions,
) {
$this->middlewareDefinitions = array_reverse($middlewareDefinitions);
}
Dispatch request through middleware to get response.
| public Yiisoft\Queue\Middleware\Consume\ConsumeRequest dispatch ( Yiisoft\Queue\Middleware\Consume\ConsumeRequest $request, Yiisoft\Queue\Middleware\Consume\MessageHandlerConsumeInterface $finishHandler ) | ||
| $request | Yiisoft\Queue\Middleware\Consume\ConsumeRequest |
Request to pass to middleware. |
| $finishHandler | Yiisoft\Queue\Middleware\Consume\MessageHandlerConsumeInterface |
Handler to use in case no middleware produced a response. |
public function dispatch(
ConsumeRequest $request,
MessageHandlerConsumeInterface $finishHandler
): ConsumeRequest {
$handlerName = $request->getMessage()->getHandlerName();
if (!array_key_exists($handlerName, $this->stack)) {
$this->stack[$handlerName] = new MiddlewareConsumeStack($this->buildMiddlewares(), $finishHandler);
}
return $this->stack[$handlerName]->handleConsume($request);
}
| public boolean hasMiddlewares ( ) | ||
| return | boolean |
Whether there are middleware defined in the dispatcher. |
|---|---|---|
public function hasMiddlewares(): bool
{
return $this->middlewareDefinitions !== [];
}
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\Consume\MiddlewareConsumeInterface[]|string[] $middlewareDefinitions ) | ||
| $middlewareDefinitions | array[]|callable[]|Yiisoft\Queue\Middleware\Consume\MiddlewareConsumeInterface[]|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\Consume\ConsumeMiddlewareDispatcher} |
|---|---|---|
public function withMiddlewares(array $middlewareDefinitions): self
{
$instance = clone $this;
$instance->middlewareDefinitions = array_reverse($middlewareDefinitions);
// Fixes a memory leak.
unset($instance->stack);
$instance->stack = [];
return $instance;
}
Signup or Login in order to comment.