Laravel 如何将链接作业分派到Lumen 6中的队列?

Laravel 如何将链接作业分派到Lumen 6中的队列?,laravel,lumen,laravel-queue,Laravel,Lumen,Laravel Queue,在Laravel中,可以指定在主作业成功执行后应按顺序运行的排队作业列表。如果序列中的一个作业失败,其余作业将不会运行。Laravel文档表明,这是通过在可分派作业上使用withChain方法实现的,如本例所示: ProcessPodcast::withChain([ new OptimizePodcast, new ReleasePodcast ])->dispatch(); 这在Laravel中非常适用,但是我使用Lumen(Laravel的一个轻量级子集)。 根据“

在Laravel中,可以指定在主作业成功执行后应按顺序运行的排队作业列表。如果序列中的一个作业失败,其余作业将不会运行。Laravel文档表明,这是通过在可分派作业上使用withChain方法实现的,如本例所示:

ProcessPodcast::withChain([
    new OptimizePodcast,
    new ReleasePodcast
])->dispatch();
这在Laravel中非常适用,但是我使用Lumen(Laravel的一个轻量级子集)。
根据“与框架的许多其他部分一样,Lumen的排队作业与Laravel的排队作业功能相同。因此,要了解Lumen中排队作业的更多信息,请查看完整的Laravel队列文档。”

Lumen文档确实提到了与Laravel的一些细微差异,包括作业分配到队列的方式的差异。它解释了Lumen中的作业可以使用调度函数或队列外观进行调度:

dispatch(new ExampleJob);

Queue::push(new ExampleJob);
以此为背景,有没有办法在Lumen中分派链接作业?我已经搜索谷歌好几天了,与我的问题最接近的是以下两个链接:

  • ,它准确地描述了我的问题,但没有提供任何解决方案
  • ,表示语法为
    $this->dispatch((new FillBruteFec($import))->chain(new FillRaiFec())这对我也不起作用
上面的堆栈溢出链接解释了Laravel语法不起作用的原因是Lumen缺少
Lightning\Foundation\Bus\Dispatchable
特性

更复杂的是,我需要为我的每项工作传递一组不同的参数,这是一个非常复杂的问题

以下是我目前在Lumen应用程序中提交作业的方式(无链接):

我想链接这些记录的主要原因是确保在修改该用户的任何后续作业之前成功创建该用户记录


所以,考虑到所有这些。。。怎么样?是否有可能在Lumen连锁工作?如果是这样,我将使用什么语法?

类中使用的lighting/bus/Queueable
trait提供了一个方法,该方法应与作业实例数组一起调用,以形成作业链

您可以通过以下方式运行作业链:

$this->dispatch(
(新CreateUser($username,$password))
->链子([
新设置转发($username,$forwardTo),
新的EnableIncomingEmail($username),
新的EnableOutgoingEmail($username),
新启用IMAP($username)
])
);

出于某些原因,我查看了Lumen和Laravel总线源代码,Lumen在业余时间没有与Laravel相同的代码。我将尝试将Laravel代码拉入Lumen,并查看结果。为什么不在CreateUser作业中分派其余作业?非常感谢您发布此帖子。它在流明6.3中对我有效。几个月来我一直在努力让它工作,所以我非常感谢您的帮助。这在流明7中不起作用。
Queue::push(new CreateUser($username,$password));
Queue::push(new SetForwarding($username,$forwardTo));
Queue::push(new EnableIncomingEmail($username));
Queue::push(new EnableOutgoingEmail($username));
Queue::push(new EnableImap($username));