In Laravel 5.5, how to get the Job ID after we dispatch a job to the job queue?

别等时光非礼了梦想. 提交于 2019-12-22 05:23:32

问题


Until Laravel 5.4, the dispatch() method returned the queue job id.

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

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

In 5.5, it returns a PendingDispatch object, which does not seem to have a method to retrieve the job id.

I've already tried with dispatch_now(), but it executes the job immediately and synchronously, while I want it to be executed in the background.


回答1:


After opening an issue at Laravel github, the solution was to use:

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

instead of

dispatch($job)



回答2:


You might also consider using DispatchesJobs trait:

class MyClassName()
{
    use DispatchesJobs;

    ....

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

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


来源:https://stackoverflow.com/questions/46785656/in-laravel-5-5-how-to-get-the-job-id-after-we-dispatch-a-job-to-the-job-queue

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!