Final Class Yiisoft\Queue\AsyncQueueProducer
| Inheritance | Yiisoft\ |
|---|---|
| Implements | Yiisoft\ |
Produces messages for one logical queue, pushing them to an adapter-backed broker.
Public Methods
Method Details
| public mixed __construct ( \ | ||
| $logger | \ |
|
| $middlewareConfig | Yiisoft\ |
|
| $adapter | Yiisoft\ |
|
| $queueName | string|\ |
|
| $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),
);
}
| public Yiisoft\ | ||
| $message | Yiisoft\ |
|
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;
}
User Contributed Notes
Leave a comment
Join the conversation to share a note.