在Laravel 5.5中,我们派发作业到作业队列后,如何获取作业ID?

In Laravel 5.5, how to get the Job ID after we dispatch a job to the job queue?

直到 Laravel 5.4,dispatch() 方法返回队列作业 ID。

$job = (new JobClass())->onQueue('queuename');
$jobId = dispatch($job);

dd($jobId); // prints the job id

在 5.5 中,它 returns 一个 PendingDispatch 对象,它似乎没有检索作业 ID 的方法。

我已经尝试过 dispatch_now(),但它会立即同步执行作业,而我希望它在后台执行。

在 Laravel github 打开问题后,解决方案是使用:

app(\Illuminate\Contracts\Bus\Dispatcher::class)->dispatch($job)

而不是

dispatch($job)

您也可以考虑使用 DispatchesJobs 特征:

class MyClassName()
{
    use DispatchesJobs;

    ....

    $job = (new JobClass())->onQueue('queuename');

    $jobId = $this->dispatch($job);