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

neekobn8  于 2023-03-31  发布在  其他
关注(0)|答案(3)|浏览(118)

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

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

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

在Python 5.5中,它返回一个PendingDispatch对象,该对象似乎没有检索作业ID的方法。
我已经尝试过使用dispatch_now(),但它会立即同步执行作业,而我希望它在后台执行。

uhry853o

uhry853o1#

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

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

而不是

dispatch($job)
pgky5nke

pgky5nke2#

你也可以考虑使用DispatchesJobs trait:

class MyClassName()
{
    use DispatchesJobs;

    ....

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

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

hlswsv353#

alexeydemin代码按预期工作。

相关问题