问题
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