Skip to content

Commit 01f00d8

Browse files
committed
[client] update rabbitmq stomp driver configuration
1 parent e7f64ae commit 01f00d8

File tree

1 file changed

+17
-32
lines changed

1 file changed

+17
-32
lines changed

pkg/enqueue/Client/DriverFactory.php

Lines changed: 17 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,9 @@
22

33
namespace Enqueue\Client;
44

5-
use Enqueue\Client\Driver\RabbitMqDriver;
65
use Enqueue\Client\Driver\RabbitMqStompDriver;
76
use Enqueue\Client\Driver\StompManagementClient;
87
use Enqueue\Dsn\Dsn;
9-
use Enqueue\Stomp\StompConnectionFactory;
10-
use Interop\Amqp\AmqpConnectionFactory;
118
use Interop\Queue\ConnectionFactory;
129

1310
final class DriverFactory implements DriverFactoryInterface
@@ -25,36 +22,8 @@ public function create(ConnectionFactory $factory, Config $config, RouteCollecti
2522
if ($driverInfo = $this->findDriverInfo($dsn, Resources::getAvailableDrivers())) {
2623
$driverClass = $driverInfo['driverClass'];
2724

28-
if (RabbitMqDriver::class === $driverClass) {
29-
if (false == $factory instanceof AmqpConnectionFactory) {
30-
throw new \LogicException(sprintf(
31-
'The factory must be instance of "%s", got "%s"',
32-
AmqpConnectionFactory::class,
33-
get_class($factory)
34-
));
35-
}
36-
37-
return new RabbitMqDriver($factory->createContext(), $config, $collection);
38-
}
39-
4025
if (RabbitMqStompDriver::class === $driverClass) {
41-
if (false == $factory instanceof StompConnectionFactory) {
42-
throw new \LogicException(sprintf(
43-
'The factory must be instance of "%s", got "%s"',
44-
StompConnectionFactory::class,
45-
get_class($factory)
46-
));
47-
}
48-
49-
$managementClient = StompManagementClient::create(
50-
ltrim($dsn->getPath(), '/'),
51-
$dsn->getHost() ?: 'localhost',
52-
$config->getDriverOption('management_plugin_port', 15672),
53-
(string) $dsn->getUser(),
54-
(string) $dsn->getPassword()
55-
);
56-
57-
return new RabbitMqStompDriver($factory->createContext(), $config, $collection, $managementClient);
26+
return $this->createRabbitMqStompDriver($factory, $dsn, $config, $collection);
5827
}
5928

6029
return new $driverClass($factory->createContext(), $config, $collection);
@@ -111,4 +80,20 @@ private function findDriverInfo(Dsn $dsn, array $factories): ?array
11180

11281
return null;
11382
}
83+
84+
private function createRabbitMqStompDriver(ConnectionFactory $factory, Dsn $dsn, Config $config, RouteCollection $collection): RabbitMqStompDriver
85+
{
86+
$defaultManagementHost = $dsn->getHost() ?: $config->getTransportOption('host', 'localhost');
87+
$managementVast = ltrim($dsn->getPath(), '/') ?: $config->getTransportOption('vhost', '/');
88+
89+
$managementClient = StompManagementClient::create(
90+
urldecode($managementVast),
91+
$config->getDriverOption('rabbitmq_management_host', $defaultManagementHost),
92+
$config->getDriverOption('rabbitmq_management_port', 15672),
93+
(string) $dsn->getUser() ?: $config->getTransportOption('user', 'guest'),
94+
(string) $dsn->getPassword() ?: $config->getTransportOption('pass', 'guest')
95+
);
96+
97+
return new RabbitMqStompDriver($factory->createContext(), $config, $collection, $managementClient);
98+
}
11499
}

0 commit comments

Comments
 (0)