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

Was this example useful?
0
                                                    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);
    }