在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);
直到 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);