ConnectionValidator.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Amqp\Setup;
  7. use Magento\Framework\Amqp\Connection\Factory as ConnectionFactory;
  8. use Magento\Framework\Amqp\Connection\FactoryOptions;
  9. /**
  10. * Class ConnectionValidator - validates Amqp related settings
  11. */
  12. class ConnectionValidator
  13. {
  14. /**
  15. * @var ConnectionFactory
  16. */
  17. private $connectionFactory;
  18. /**
  19. * @param ConnectionFactory $connectionFactory
  20. */
  21. public function __construct(ConnectionFactory $connectionFactory)
  22. {
  23. $this->connectionFactory = $connectionFactory;
  24. }
  25. /**
  26. * Checks Amqp Connection
  27. *
  28. * @param string $host
  29. * @param string $port
  30. * @param string $user
  31. * @param string $password
  32. * @param string $virtualHost
  33. * @param bool $ssl
  34. * @param string[]|null $sslOptions
  35. * @return bool true if the connection succeeded, false otherwise
  36. */
  37. public function isConnectionValid(
  38. $host,
  39. $port,
  40. $user,
  41. $password = '',
  42. $virtualHost = '',
  43. bool $ssl = false,
  44. array $sslOptions = null
  45. ) {
  46. try {
  47. $options = new FactoryOptions();
  48. $options->setHost($host);
  49. $options->setPort($port);
  50. $options->setUsername($user);
  51. $options->setPassword($password);
  52. $options->setVirtualHost($virtualHost);
  53. $options->setSslEnabled($ssl);
  54. if ($sslOptions) {
  55. $options->setSslOptions($sslOptions);
  56. }
  57. $connection = $this->connectionFactory->create($options);
  58. $connection->close();
  59. } catch (\Exception $e) {
  60. return false;
  61. }
  62. return true;
  63. }
  64. }