在Laravel 5.3中,我们派发作业到作业队列后,如何获取作业ID?
In Laravel 5.3, how to get the Job ID after we dispatch a job to the job queue?
在Laravel 5.3中,在controller中,我们可以像这样将一个job分派到job queue中:
$job = (new JobClass())->onQueue('queuename');
dispatch($job);
在使用InteractsWithQueue
特征的Job class中,在handle
函数中,我们可以这样得到Job ID:
$this->job->getJobId();
但是,我想在使用 dispatch($job)
后在我的控制器中获取作业 ID。
如何获取controller中的Job ID?
如果没有这样的功能,我们可以扩展dispatch
辅助函数来添加这个功能吗?
dispatch()
函数将 return 作业 ID:
$job = (new JobClass())->onQueue('queuename');
$jobId = dispatch($job);
dd($jobId);
这是一个很老的问题。但也许是谁 google 发现了这个 post。
Laravel 正在作业排队后触发事件。 Illuminate\Queue\Events\JobQueued
您可以为该事件添加一个侦听器并获取几乎所有信息,包括。您的事件侦听器中的数据库 ID。
在您的 EventServiceProvider 中附加您的侦听器。在我的应用程序中,它是 JobQueuedListener
文件
use Illuminate\Queue\Events\JobQueued;
protected $listen = [
JobQueued::class =>[
JobQueuedListener::class
],
在 JobQueuedListener
文件中,您现在可以访问事件变量。
public function handle(JobQueued $event)
{
$this->event = $event;
$mainListener = $event->job->class ?? '';
if ($mainListener == 'App\Listeners\IpBlockedListener') {
$this->addIdToIpBlockedModel();
}
}
在Laravel 5.3中,在controller中,我们可以像这样将一个job分派到job queue中:
$job = (new JobClass())->onQueue('queuename');
dispatch($job);
在使用InteractsWithQueue
特征的Job class中,在handle
函数中,我们可以这样得到Job ID:
$this->job->getJobId();
但是,我想在使用 dispatch($job)
后在我的控制器中获取作业 ID。
如何获取controller中的Job ID?
如果没有这样的功能,我们可以扩展dispatch
辅助函数来添加这个功能吗?
dispatch()
函数将 return 作业 ID:
$job = (new JobClass())->onQueue('queuename');
$jobId = dispatch($job);
dd($jobId);
这是一个很老的问题。但也许是谁 google 发现了这个 post。
Laravel 正在作业排队后触发事件。 Illuminate\Queue\Events\JobQueued
您可以为该事件添加一个侦听器并获取几乎所有信息,包括。您的事件侦听器中的数据库 ID。
在您的 EventServiceProvider 中附加您的侦听器。在我的应用程序中,它是 JobQueuedListener
文件
use Illuminate\Queue\Events\JobQueued;
protected $listen = [
JobQueued::class =>[
JobQueuedListener::class
],
在 JobQueuedListener
文件中,您现在可以访问事件变量。
public function handle(JobQueued $event)
{
$this->event = $event;
$mainListener = $event->job->class ?? '';
if ($mainListener == 'App\Listeners\IpBlockedListener') {
$this->addIdToIpBlockedModel();
}
}