lumen队列执行无反应

版本:lumen5.6

出现问题:执行 artisan queue:work OR artisan queue:listen 队列执行无法应

运行队列时,cli既不报错也无任何反应,追踪队列启动文件“Illuminate\Queue\Worker”。


//在文件中追踪到此处,发现队列执行会根据预定义queue执行

protected function getNextJob($connection, $queue)

{

    try {

        foreach (explode(',', $queue) as $queue) {

            if (! is_null($job = $connection->pop($queue))) {

                return $job;

}

}

    } catch (Exception $e) {

        $this->exceptions->report($e);

        $this->stopWorkerIfLostConnection($e);

    } catch (Throwable $e) {

        $this->exceptions->report($e = new FatalThrowableError($e));

        $this->stopWorkerIfLostConnection($e);

}

}

在推送队列任务时,执行指定队列名称。laravel默认队列名称为“default”。


$user = User::find(1);

dispatch((new OrderExpireQueueJob($user)->onQueue('user'));

所以将laravel/lumen-framework/config中的queue.php文件复制一份至,/config目录下。


//在对应的消息驱动中,修改queue属性,例如使用database队列,增加'queue'=>'default,user'

'connections' => [

    'sync' => [

        'driver' => 'sync',

],

    'database' => [

        'driver' => 'database',

        'table' => 'jobs',

        'queue' => 'default,user',

        'retry_after' => 60,

],

    'beanstalkd' => [

        'driver' => 'beanstalkd',

        'host' => 'localhost',

        'queue' => 'default',

        'retry_after' => 60,

],

    'sqs' => [

        'driver' => 'sqs',

        'key' => 'your-public-key',

        'secret' => 'your-secret-key',

        'queue' => 'your-queue-url',

        'region' => 'us-east-1',

],

    'redis' => [

        'driver' => 'redis',

        'connection' => env('QUEUE_REDIS_CONNECTION', 'default'),

        'queue' => 'default',

        'retry_after' => 60,

],

],

再次执行队列即可运行成功。根本原因是自定义了对名称导致的执行不到!

你可能感兴趣的:(lumen队列执行无反应)