我无法在 laravel 中发送延迟的作业

I can't dispatch delayed job in laravel

下面的代码不起作用。我想我已经把所有事情都做对了,但不知何故我没有工作。

... MyJob::dispatch($job)->onQueue('processing')->delay(Carbon::now()->addSeconds(30)); ...

MyJob.php

<?php

namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;

class MyJob implements ShouldQueue
{
    use InteractsWithQueue, Queueable, SerializesModels, Dispatchable;

    public function __construct($job)
    {
        // I described a logging code here and yes, there was change, but then...
    }

    public function handle()
    {
        // I described a logging code here, but there wasn't change
    }
}

问题是 dispatchNow() 确实有效,但延迟调度无效。

我也正确设置了 .env(我猜)

.env 文件 ...

QUEUE_CONNECTION=database

...

config/queue.php ...

'default' => env('QUEUE_CONNECTION', 'sync'),

...

请帮助我。任何建议都会很好。谢谢。

诊断步骤;

  1. 打开 tinker 和 运行 config('queue') 并检查队列设置是否符合预期

  2. 在没有 运行 队列工作者的情况下,将您的作业分派到队列中。打开您的数据库工具并检查作业 table 是否包含一条新记录。

  3. 运行 queue worker php artisan queue:work 延迟后,job 应该 运行.

  4. 检查作业是否已从作业 table 中删除,并且 failed_jobs table.

    中没有任何内容