![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-message-queue/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\MessageQueue\Model; use Magento\Framework\MessageQueue\ConsumerFactory; use Magento\Framework\Exception\LocalizedException; use Magento\Framework\App\MaintenanceMode; use Magento\Framework\App\ObjectManager; /** * Consumer runner class is used to run consumer, which name matches the magic method invoked on this class. * * Is used to schedule consumers execution in crontab.xml as follows: * <code> * <job name="consumerConsumerName" instance="Magento\MessageQueue\Model\ConsumerRunner" method="consumerName"> * </code> * Where <i>consumerName</i> should be a valid name of consumer registered in some queue.xml * * @api * @since 100.0.2 */ class ConsumerRunner { /** * @var ConsumerFactory */ private $consumerFactory; /** * @var MaintenanceMode */ private $maintenanceMode; /** * @var integer */ private $maintenanceSleepInterval; /** * Initialize dependencies. * * @param ConsumerFactory $consumerFactory * @param MaintenanceMode $maintenanceMode * @param integer $maintenanceSleepInterval */ public function __construct( ConsumerFactory $consumerFactory, MaintenanceMode $maintenanceMode = null, $maintenanceSleepInterval = 30 ) { $this->consumerFactory = $consumerFactory; $this->maintenanceMode = $maintenanceMode ?: ObjectManager::getInstance()->get(MaintenanceMode::class); $this->maintenanceSleepInterval = $maintenanceSleepInterval; } /** * Process messages in queue using consumer, which name is equal to the current magic method name. * * @param string $name * @param array $arguments * @throws LocalizedException * @return void */ public function __call($name, $arguments) { try { $consumer = $this->consumerFactory->get($name); } catch (\Exception $e) { $errorMsg = '"%callbackMethod" callback method specified in crontab.xml ' . 'must have corresponding consumer declared in some queue.xml.'; throw new LocalizedException(__($errorMsg, ['callbackMethod' => $name])); } if (!$this->maintenanceMode->isOn()) { $consumer->process(); } else { sleep($this->maintenanceSleepInterval); } } }