objectManager = $objectManager; $this->queueFactories = $queueFactories; $this->connectionTypeResolver = $connectionTypeResolver; } /** * {@inheritdoc} * @since 102.0.1 */ public function create($queueName, $connectionName) { $connectionType = $this->connectionTypeResolver->getConnectionType($connectionName); if (!isset($this->queueFactories[$connectionType])) { throw new \LogicException("Not found queue for connection name '{$connectionName}' in config"); } $factory = $this->queueFactories[$connectionType]; $queue = $factory->create($queueName, $connectionName); if (!$queue instanceof QueueInterface) { $queueInterface = \Magento\Framework\MessageQueue\QueueInterface::class; throw new \LogicException( "Queue for connection name '{$connectionName}' does not implement interface '{$queueInterface}'" ); } return $queue; } }