8
8
namespace Magento \Framework \Amqp \Connection ;
9
9
10
10
use Magento \Framework \App \ObjectManager ;
11
+ use PhpAmqpLib \Connection \AMQPConnectionFactory ;
12
+ use PhpAmqpLib \Connection \AMQPConnectionConfig ;
11
13
use PhpAmqpLib \Connection \AbstractConnection ;
12
- use PhpAmqpLib \Connection \AMQPSSLConnection ;
13
- use PhpAmqpLib \Connection \AMQPStreamConnection ;
14
14
15
15
/**
16
16
* Create connection based on options.
@@ -25,20 +25,50 @@ class Factory
25
25
*/
26
26
public function create (FactoryOptions $ options ): AbstractConnection
27
27
{
28
- $ connectionType = $ options ->isSslEnabled () ? AMQPSSLConnection::class : AMQPStreamConnection::class;
29
- $ parameters = [
30
- 'host ' => $ options ->getHost (),
31
- 'port ' => $ options ->getPort (),
32
- 'user ' => $ options ->getUsername (),
33
- 'password ' => $ options ->getPassword (),
34
- 'vhost ' => $ options ->getVirtualHost () !== null ? $ options ->getVirtualHost () : '/ ' ,
35
- ];
28
+ $ config = ObjectManager::getInstance ()->create (AMQPConnectionConfig::class);
36
29
30
+ // Set host, port, user, password, and vhost from options
31
+ $ config ->setHost ($ options ->getHost ());
32
+ $ config ->setPort ((int )$ options ->getPort ());
33
+ $ config ->setUser ($ options ->getUsername ());
34
+ $ config ->setPassword ($ options ->getPassword ());
35
+ $ config ->setVhost ($ options ->getVirtualHost () !== null ? $ options ->getVirtualHost () : '/ ' );
36
+
37
+ // Set SSL options if SSL is enabled
37
38
if ($ options ->isSslEnabled ()) {
38
- $ parameters ['ssl_options ' ] = $ options ->getSslOptions () !== null
39
- ? $ options ->getSslOptions ()
40
- : ['verify_peer ' => true ];
39
+ $ config ->setIsSecure (true );
40
+ $ sslOptions = $ options ->getSslOptions ();
41
+ if ($ sslOptions ) {
42
+ if (isset ($ sslOptions ['cafile ' ])) {
43
+ $ config ->setSslCaCert ($ sslOptions ['cafile ' ]);
44
+ }
45
+ if (isset ($ sslOptions ['local_cert ' ])) {
46
+ $ config ->setSslCert ($ sslOptions ['local_cert ' ]);
47
+ }
48
+ if (isset ($ sslOptions ['local_pk ' ])) {
49
+ $ config ->setSslKey ($ sslOptions ['local_pk ' ]);
50
+ }
51
+ if (isset ($ sslOptions ['verify_peer ' ])) {
52
+ $ config ->setSslVerify ($ sslOptions ['verify_peer ' ]);
53
+ }
54
+ if (isset ($ sslOptions ['verify_peer_name ' ])) {
55
+ $ config ->setSslVerifyName ($ sslOptions ['verify_peer_name ' ]);
56
+ }
57
+ if (isset ($ sslOptions ['passphrase ' ])) {
58
+ $ config ->setSslPassPhrase ($ sslOptions ['passphrase ' ]);
59
+ }
60
+ if (isset ($ sslOptions ['ciphers ' ])) {
61
+ $ config ->setSslCiphers ($ sslOptions ['ciphers ' ]);
62
+ }
63
+ } else {
64
+ // Default SSL verification option
65
+ $ config ->setSslVerify (true );
66
+ }
67
+ } else {
68
+ $ config ->setIsSecure (false );
41
69
}
42
- return ObjectManager::getInstance ()->create ($ connectionType , $ parameters );
70
+
71
+ // Use the connection factory to create the connection
72
+ return AMQPConnectionFactory::create ($ config );
43
73
}
44
74
}
0 commit comments