12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\Amqp\Topology;
- use Magento\Framework\MessageQueue\Topology\Config\ExchangeConfigItem\BindingInterface;
- use PhpAmqpLib\Channel\AMQPChannel;
- /**
- * {@inheritdoc}
- */
- class BindingInstaller implements BindingInstallerInterface
- {
- /**
- * @var BindingInstallerInterface[]
- */
- private $installers;
- /**
- * Initialize dependencies.
- *
- * @param BindingInstallerInterface[] $installers
- */
- public function __construct(array $installers)
- {
- $this->installers = $installers;
- }
- /**
- * {@inheritdoc}
- */
- public function install(AMQPChannel $channel, BindingInterface $binding, $exchangeName)
- {
- $this->getInstaller($binding->getDestinationType())->install($channel, $binding, $exchangeName);
- }
- /**
- * Get binding installer by type.
- *
- * @param string $type
- * @return BindingInstallerInterface
- */
- private function getInstaller($type)
- {
- if (!isset($this->installers[$type])) {
- throw new \InvalidArgumentException(sprintf('Installer type [%s] is not configured', $type));
- }
- return $this->installers[$type];
- }
- }
|