ExchangeInstaller.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Amqp\Topology;
  7. use Magento\Framework\MessageQueue\Topology\Config\ExchangeConfigItemInterface;
  8. /**
  9. * Exchange installer.
  10. */
  11. class ExchangeInstaller
  12. {
  13. use ArgumentProcessor;
  14. /**
  15. * @var BindingInstallerInterface
  16. */
  17. private $bindingInstaller;
  18. /**
  19. * Initialize dependencies.
  20. *
  21. * @param BindingInstallerInterface $bindingInstaller
  22. */
  23. public function __construct(BindingInstallerInterface $bindingInstaller)
  24. {
  25. $this->bindingInstaller = $bindingInstaller;
  26. }
  27. /**
  28. * Install exchange.
  29. *
  30. * @param \PhpAmqpLib\Channel\AMQPChannel $channel
  31. * @param ExchangeConfigItemInterface $exchange
  32. * @return void
  33. */
  34. public function install(\PhpAmqpLib\Channel\AMQPChannel $channel, ExchangeConfigItemInterface $exchange)
  35. {
  36. $channel->exchange_declare(
  37. $exchange->getName(),
  38. $exchange->getType(),
  39. false,
  40. $exchange->isDurable(),
  41. $exchange->isAutoDelete(),
  42. $exchange->isInternal(),
  43. false,
  44. $this->processArguments($exchange->getArguments())
  45. );
  46. foreach ($exchange->getBindings() as $binding) {
  47. $this->bindingInstaller->install($channel, $binding, $exchange->getName());
  48. }
  49. }
  50. }