Programming Language PHP
Namespace Oro\Component\MessageQueue\Consumption
Class Context
Method/Function setMessageProcessorName
Total Examples 1
1 code examples of PHP Oro\Component\MessageQueue\Consumption\Context::setMessageProcessorName extracted from open source projects
public function onPreReceived(Context $context): void
{
if ($context->getMessageProcessorName()) {
// Message processor is already set.
return;
}
$topicName = $context->getMessage()?->getProperty(Config::PARAMETER_TOPIC_NAME) ?? '';
$topicMeta = $this->topicMetaRegistry->getTopicMeta($topicName);
$transportQueueName = $context->getMessage()?->getProperty(Config::PARAMETER_QUEUE_NAME) ?? '';
$destinationMeta = $this->destinationMetaRegistry->getDestinationMetaByTransportQueueName($transportQueueName);
$messageProcessorName = $topicMeta->getMessageProcessorName($destinationMeta->getQueueName());
if (empty($messageProcessorName)) {
// Falls back to noop message processor if message is not claimed by a message processor.
$messageProcessorName = $this->noopMessageProcessorName;
$context->getLogger()->warning(
sprintf(
'Message processor for "%s" topic name in "%s" queue was not found, falling back to "%s"',
$topicName,
$destinationMeta->getQueueName(),
$this->noopMessageProcessorName
)
);
} else {
$context->getLogger()->debug(
sprintf(
'Found "%s" message processor for topic "%s" in queue "%s"',
$messageProcessorName,
$topicName,
$destinationMeta->getQueueName()
)
);
}
$context->setMessageProcessorName($messageProcessorName);
}