Factory.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. namespace Magento\Framework\Amqp\Connection;
  8. use Magento\Framework\App\ObjectManager;
  9. use PhpAmqpLib\Connection\AbstractConnection;
  10. use PhpAmqpLib\Connection\AMQPSSLConnection;
  11. use PhpAmqpLib\Connection\AMQPStreamConnection;
  12. /**
  13. * Create connection based on options.
  14. */
  15. class Factory
  16. {
  17. /**
  18. * Create connection according to given options.
  19. *
  20. * @param FactoryOptions $options
  21. * @return AbstractConnection
  22. */
  23. public function create(FactoryOptions $options): AbstractConnection
  24. {
  25. $connectionType = $options->isSslEnabled() ? AMQPSSLConnection::class : AMQPStreamConnection::class;
  26. $parameters = [
  27. 'host' => $options->getHost(),
  28. 'port' => $options->getPort(),
  29. 'user' => $options->getUsername(),
  30. 'password' => $options->getPassword(),
  31. 'vhost' => $options->getVirtualHost() !== null ? $options->getVirtualHost() : '/',
  32. ];
  33. if ($options->isSslEnabled()) {
  34. $parameters['ssl_options'] = $options->getSslOptions() !== null
  35. ? $options->getSslOptions()
  36. : ['verify_peer' => true];
  37. }
  38. return ObjectManager::getInstance()->create($connectionType, $parameters);
  39. }
  40. }