objectManager = $objectManager; $this->mergers = $mergers; } /** * @param string $consumerName * @return MergerInterface * @throws \LogicException */ public function create($consumerName) { if (!isset($this->mergers[$consumerName])) { throw new \LogicException("Not found merger for consumer name '{$consumerName}'"); } $mergerClassName = $this->mergers[$consumerName]; $merger = $this->objectManager->get($mergerClassName); if (!$merger instanceof MergerInterface) { $mergerInterfaceName = \Magento\Framework\MessageQueue\MergerInterface::class; throw new \LogicException( "Merger '{$mergerClassName}' for consumer name '{$consumerName}' " . "does not implement interface '{$mergerInterfaceName}'" ); } return $merger; } }