/** * Listen to the given queue. * * @param string $connectionName * @param string $queue * @param int $delay * @param int $sleep * @param int $maxTries * @return array */ public function pop($connectionName, $queue = null, $delay = 0, $sleep = 3, $maxTries = 0) { $connection = Queue::connection($connectionName); if ($job = $connection->pop($queue)) { return $this->process($job, $maxTries, $delay); } // Sleep the worker for the specified number of seconds, if no jobs sleep($sleep); return ['job' => null, 'failed' => false]; }
public function testFailedListener() { Queue::register($this->di); $queue = Queue::connection(); $workerClass = TestQueueWorker::class; $data = ['test' => 'listener']; TestQueueWorker::reset(); $queue->push("{$workerClass}::staticFailureWorker", $data); // Failure $listener = new Listener(); $e = null; try { $listener->pop('', null, 0, 0, 1); } catch (Exception $e) { } $this->assertInstanceOf(Exception::class, $e); // Log failure job $result = $listener->pop('', null, 0, 0, 1); $this->assertTrue(fnGet($result, 'failed')); }