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

Ste*_*eVg 6 laravel laravel-5.5

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

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

dd($jobId); // prints the job id
Run Code Online (Sandbox Code Playgroud)

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

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

Ste*_*eVg 14

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

app(\Illuminate\Contracts\Bus\Dispatcher::class)->dispatch($job)
Run Code Online (Sandbox Code Playgroud)

代替

dispatch($job)
Run Code Online (Sandbox Code Playgroud)


ade*_*min 6

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

class MyClassName()
{
    use DispatchesJobs;

    ....

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

    $jobId = $this->dispatch($job);
Run Code Online (Sandbox Code Playgroud)