diff --git a/src/Symfony/Component/Messenger/Tests/Transport/RedisExt/ConnectionTest.php b/src/Symfony/Component/Messenger/Tests/Transport/RedisExt/ConnectionTest.php index f73db2b642..66a53f790f 100644 --- a/src/Symfony/Component/Messenger/Tests/Transport/RedisExt/ConnectionTest.php +++ b/src/Symfony/Component/Messenger/Tests/Transport/RedisExt/ConnectionTest.php @@ -85,6 +85,19 @@ class ConnectionTest extends TestCase ); } + public function testFromDsnWithMixDsnQueryOptions() + { + $this->assertEquals( + Connection::fromDsn('redis://localhost/queue/group1?serializer=2', ['consumer' => 'specific-consumer']), + Connection::fromDsn('redis://localhost/queue/group1/specific-consumer?serializer=2') + ); + + $this->assertEquals( + Connection::fromDsn('redis://localhost/queue/group1/consumer1', ['consumer' => 'specific-consumer']), + Connection::fromDsn('redis://localhost/queue/group1/consumer1') + ); + } + public function testKeepGettingPendingMessages() { $redis = $this->getMockBuilder(\Redis::class)->disableOriginalConstructor()->getMock(); diff --git a/src/Symfony/Component/Messenger/Transport/RedisExt/Connection.php b/src/Symfony/Component/Messenger/Transport/RedisExt/Connection.php index 560200714f..9919ffffda 100644 --- a/src/Symfony/Component/Messenger/Transport/RedisExt/Connection.php +++ b/src/Symfony/Component/Messenger/Transport/RedisExt/Connection.php @@ -101,7 +101,8 @@ class Connection ]; if (isset($parsedUrl['query'])) { - parse_str($parsedUrl['query'], $redisOptions); + parse_str($parsedUrl['query'], $dsnOptions); + $redisOptions = array_merge($redisOptions, $dsnOptions); } $autoSetup = null;