在Laravel 5.5中,如何在将作业分派到作业队列后获取作业ID?

时间:2017-10-17 08:22:53

标签: laravel laravel-5.5

在Laravel 5.4之前,dispatch()方法返回队列作业ID。

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

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

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

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

2 个答案:

答案 0 :(得分:10)

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

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

而不是

dispatch($job)

答案 1 :(得分:0)

您还可以考虑使用DispatchesJobs特质:

class MyClassName()
{
    use DispatchesJobs;

    ....

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

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