Trait method dispatch has not been applied, because there are collisions with other trait methods on
我总是遇到上述错误,现在我想在工作中同时使用Dispatchable和DispatchJobs,我怎么能这样做?任何帮助或指导将受到高度赞赏。在Laracasts上寻找的解决方案很少,但都没有。
答案 0 :(得分:1)
使用全局dispatch()
帮助程序,这将有助于在作业中分派另一个作业。因此,我们根本不需要添加DispatchesJobs(这可以消除与Dispatchable的冲突),您只需使用帮助器dispatch()
即可使用
答案 1 :(得分:0)
乔布斯通常不会派遣其他职位,所以首先要删除DispatchJobs
特征。你能做的就是听job events。
当作业完成时,它会触发after
事件。听取此事件,然后dispatch()
听众中的下一个作业:
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Queue::after(function (JobProcessed $event) {
// determine the job type from $event->job
// then dispatch the next job based on your logic
// check the job type
if ($event->job instanceof MyJob) {
// get the job payload to pass to next job
$data = $event->job->payload
dispatch(new NextJob($data));
// or use the static method
NextJob::dispatch($data);
}
});
}
答案 2 :(得分:0)
如果您的工作类别是MyAnotherJob,请尝试调度
MyAnotherJob::dispatch()
每个Job
类都有一个静态dispatch
函数。
您可以使用它。
答案 3 :(得分:0)
在BbtvAdvJob
旁边我再次派遣。
dispatch(new BbtvAdvJob())->delay(3);
确保在更改作业代码时调用 php artisan queue:work
。