0

Final Class Yiisoft\Queue\AsyncQueueProducer

InheritanceYiisoft\Queue\AsyncQueueProducer
ImplementsYiisoft\Queue\QueueProducerInterface

Produces messages for one logical queue, pushing them to an adapter-backed broker.

Method Details

Hide inherited methods

__construct() public method

public mixed __construct ( \Psr\Log\LoggerInterface $logger, Yiisoft\Queue\Middleware\Push\PushMiddlewareConfig $middlewareConfig, Yiisoft\Queue\Adapter\AdapterInterface $adapter, string|\BackedEnum $queueName DefaultQueue::NAME, array $middlewareDefinitions = [] )
$logger \Psr\Log\LoggerInterface
$middlewareConfig Yiisoft\Queue\Middleware\Push\PushMiddlewareConfig
$adapter Yiisoft\Queue\Adapter\AdapterInterface
$queueName string|\BackedEnum
$middlewareDefinitions array

Queue-specific push middleware definitions.

                public function __construct(
    private readonly LoggerInterface $logger,
    PushMiddlewareConfig $middlewareConfig,
    private readonly AdapterInterface $adapter,
    string|BackedEnum $queueName = DefaultQueue::NAME,
    array $middlewareDefinitions = [],
) {
    $this->queueName = StringNormalizer::normalize($queueName);
    $this->dispatcher = new PushMiddlewareDispatcher(
        middlewareFactory: $middlewareConfig->middlewareFactory,
        middlewareDefinitions: [...$middlewareConfig->commonMiddlewareDefinitions, ...$middlewareDefinitions],
        finishHandler: new AdapterPushHandler($adapter),
    );
}

            
getQueueName() public method

public string getQueueName ( )

                public function getQueueName(): string
{
    return $this->queueName;
}

            
push() public method

public Yiisoft\Queue\Message\MessageInterface push ( Yiisoft\Queue\Message\MessageInterface $message )
$message Yiisoft\Queue\Message\MessageInterface

                public function push(MessageInterface $message): MessageInterface
{
    $this->logger->debug(
        'Preparing to push message with message type "{messageType}".',
        ['messageType' => $message->getType()],
    );
    $message = $this->dispatcher->dispatch($message);
    $id = IdEnvelope::fromMessage($message)->getId();
    $this->logger->info(
        $id === null
            ? 'Pushed message with message type "{messageType}" to the queue. ID doesn\'t assigned.'
            : 'Pushed message with message type "{messageType}" to the queue. Assigned ID #{id}.',
        ['messageType' => $message->getType(), 'id' => $id],
    );
    return $message;
}

            
status() public method

public \Yiisoft\Queue\MessageStatus status ( string|integer $id )
$id string|integer

                public function status(string|int $id): MessageStatus
{
    return $this->adapter->status($id);
}