0

Final Class Yiisoft\Queue\Provider\PredefinedQueueProvider

InheritanceYiisoft\Queue\Provider\PredefinedQueueProvider
ImplementsYiisoft\Queue\Provider\QueueConsumerProviderInterface, Yiisoft\Queue\Provider\QueueProducerProviderInterface

Provides already-created producer and consumer instances from strict role maps.

Method Details

Hide inherited methods

__construct() public method

public mixed __construct ( array $queues )
$queues array

                public function __construct(array $queues)
{
    foreach ($queues as $queueName => $roles) {
        if (!is_array($roles) || $roles === []) {
            throw new InvalidQueueConfigException(sprintf('Queue "%s" must be a non-empty role map containing ready "producer" and/or "consumer" instances.', $queueName));
        }
        $unknown = array_diff(array_keys($roles), ['producer', 'consumer']);
        if ($unknown !== []) {
            throw new InvalidQueueConfigException(sprintf('Queue "%s" has unknown role key(s) "%s". Only "producer" and "consumer" are allowed.', $queueName, implode('", "', $unknown)));
        }
        foreach ($roles as $role => $instance) {
            $expected = $role === 'producer' ? QueueProducerInterface::class : QueueConsumerInterface::class;
            if (!$instance instanceof $expected) {
                $hint = is_array($instance) || is_string($instance) ? ' Use QueueFactoryProvider for factory definitions.' : '';
                throw new InvalidQueueConfigException(sprintf(
                    'Queue "%s" role "%s" must be a ready instance of "%s"; got "%s" (configuration path queues.%s.%s).%s',
                    $queueName,
                    $role,
                    $expected,
                    get_debug_type($instance),
                    $queueName,
                    $role,
                    $hint,
                ));
            }
        }
        /** @var array<string, QueueProducerInterface|QueueConsumerInterface> $roles */
        $this->queues[$queueName] = $roles;
        if (array_key_exists('producer', $roles)) {
            $this->producerQueueNames[] = $queueName;
        }
        if (array_key_exists('consumer', $roles)) {
            $this->consumerQueueNames[] = $queueName;
        }
    }
}

            
getConsumer() public method

public Yiisoft\Queue\QueueConsumerInterface getConsumer ( string|\BackedEnum $queueName )
$queueName string|\BackedEnum

                public function getConsumer(string|BackedEnum $queueName): QueueConsumerInterface
{
    $instance = $this->get($queueName, 'consumer');
    assert($instance instanceof QueueConsumerInterface);
    return $instance;
}

            
getConsumerQueueNames() public method

public array getConsumerQueueNames ( )

                public function getConsumerQueueNames(): array
{
    return $this->consumerQueueNames;
}

            
getProducer() public method

public Yiisoft\Queue\QueueProducerInterface getProducer ( string|\BackedEnum $queueName )
$queueName string|\BackedEnum

                public function getProducer(string|BackedEnum $queueName): QueueProducerInterface
{
    $instance = $this->get($queueName, 'producer');
    assert($instance instanceof QueueProducerInterface);
    return $instance;
}

            
getProducerQueueNames() public method

public array getProducerQueueNames ( )

                public function getProducerQueueNames(): array
{
    return $this->producerQueueNames;
}

            
hasConsumer() public method

public boolean hasConsumer ( string|\BackedEnum $queueName )
$queueName string|\BackedEnum

                public function hasConsumer(string|BackedEnum $queueName): bool
{
    return array_key_exists('consumer', $this->queues[StringNormalizer::normalize($queueName)] ?? []);
}

            
hasProducer() public method

public boolean hasProducer ( string|\BackedEnum $queueName )
$queueName string|\BackedEnum

                public function hasProducer(string|BackedEnum $queueName): bool
{
    return array_key_exists('producer', $this->queues[StringNormalizer::normalize($queueName)] ?? []);
}