diff --git a/src/Command/WorkerCommand.php b/src/Command/WorkerCommand.php index 74d6f62..b302dc0 100644 --- a/src/Command/WorkerCommand.php +++ b/src/Command/WorkerCommand.php @@ -24,7 +24,7 @@ use Cake\Log\Log; use Cake\Queue\Consumption\QueueExtension; use Cake\Queue\Queue\Processor; -use Enqueue\SimpleClient\SimpleClient; +use Cake\Queue\QueueManager; use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; @@ -139,8 +139,7 @@ public function execute(Arguments $args, ConsoleIo $io) $processor->getEventManager()->on($listener); $extension->getEventManager()->on($listener); } - $url = Configure::read("Queue.{$config}.url"); - $client = new SimpleClient($url, $logger); + $client = QueueManager::engine($config); $queue = $args->getOption('queue') ? (string)$args->getOption('queue') : Configure::read("Queue.{$config}.queue", 'default'); diff --git a/tests/TestCase/Command/WorkerCommandTest.php b/tests/TestCase/Command/WorkerCommandTest.php index 47cd324..0cd77d7 100644 --- a/tests/TestCase/Command/WorkerCommandTest.php +++ b/tests/TestCase/Command/WorkerCommandTest.php @@ -223,7 +223,7 @@ public function testQueueProcessesJobWithOtherQueue() { $config = [ 'queue' => 'other', - 'url' => 'file:///' . TMP . DS . 'queue', + 'url' => 'file:///' . TMP . DS . 'other-queue', ]; Configure::write([ 'Queue' => ['other' => $config], diff --git a/tests/TestCase/QueueManagerTest.php b/tests/TestCase/QueueManagerTest.php index 01f67b6..99a5364 100644 --- a/tests/TestCase/QueueManagerTest.php +++ b/tests/TestCase/QueueManagerTest.php @@ -71,6 +71,33 @@ public function testSetConfigOverwrite() ]); } + public function testNonDefaultQueueNameString() + { + QueueManager::setConfig('test', [ + 'url' => 'file:///' . TMP . DS . 'queue', + 'queue' => 'other', + ]); + $engine = QueueManager::engine('test'); + $this->assertInstanceOf(SimpleClient::class, $engine); + $this->assertSame('other', $engine->getDriver()->getConfig()->getRouterQueue()); + } + + public function testNonDefaultQueueNameArray() + { + QueueManager::setConfig('test', [ + 'url' => [ + 'transport' => 'file:', + 'client' => [ + 'router_queue' => 'other', + ], + ], + 'queue' => 'ignored', + ]); + $engine = QueueManager::engine('test'); + $this->assertInstanceOf(SimpleClient::class, $engine); + $this->assertSame('other', $engine->getDriver()->getConfig()->getRouterQueue()); + } + public function testEngine() { QueueManager::setConfig('test', [