Final Class Yiisoft\Queue\Provider\PredefinedQueueProvider
| Inheritance | Yiisoft\ |
|---|---|
| Implements | Yiisoft\ |
Provides already-created producer and consumer instances from strict role maps.
Public Methods
Method Details
| public mixed __construct ( array | ||
| $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;
}
}
}
| public Yiisoft\ | ||
| $queueName | string|\ |
|
public function getConsumer(string|BackedEnum $queueName): QueueConsumerInterface
{
$instance = $this->get($queueName, 'consumer');
assert($instance instanceof QueueConsumerInterface);
return $instance;
}
| public array getConsumerQueueNames ( ) |
public function getConsumerQueueNames(): array
{
return $this->consumerQueueNames;
}
| public Yiisoft\ | ||
| $queueName | string|\ |
|
public function getProducer(string|BackedEnum $queueName): QueueProducerInterface
{
$instance = $this->get($queueName, 'producer');
assert($instance instanceof QueueProducerInterface);
return $instance;
}
| public array getProducerQueueNames ( ) |
public function getProducerQueueNames(): array
{
return $this->producerQueueNames;
}
| public boolean hasConsumer ( string|\ | ||
| $queueName | string|\ |
|
public function hasConsumer(string|BackedEnum $queueName): bool
{
return array_key_exists('consumer', $this->queues[StringNormalizer::normalize($queueName)] ?? []);
}
| public boolean hasProducer ( string|\ | ||
| $queueName | string|\ |
|
public function hasProducer(string|BackedEnum $queueName): bool
{
return array_key_exists('producer', $this->queues[StringNormalizer::normalize($queueName)] ?? []);
}
User Contributed Notes
Leave a comment
Join the conversation to share a note.