在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()
,但它会立即同步执行作业,而我希望它在后台执行。
答案 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);