diff --git a/src/Symfony/Component/Messenger/Tests/Transport/RedisExt/ConnectionTest.php b/src/Symfony/Component/Messenger/Tests/Transport/RedisExt/ConnectionTest.php index f73db2b642591..66a53f790f50d 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 @@ public function testFromDsnWithQueryOptions() ); } + 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 560200714ff21..9919ffffda2f3 100644 --- a/src/Symfony/Component/Messenger/Transport/RedisExt/Connection.php +++ b/src/Symfony/Component/Messenger/Transport/RedisExt/Connection.php @@ -101,7 +101,8 @@ public static function fromDsn(string $dsn, array $redisOptions = [], \Redis $re ]; if (isset($parsedUrl['query'])) { - parse_str($parsedUrl['query'], $redisOptions); + parse_str($parsedUrl['query'], $dsnOptions); + $redisOptions = array_merge($redisOptions, $dsnOptions); } $autoSetup = null;