LC *_*ong 12 queue event-listener laravel laravel-5
对我来说,似乎两者非常相似:
ShouldQueue
接口(在事件监听器的情况下,这是一个选项)handle()
和failed()
(可选)方法来执行各自的任务.从本质上讲,对我来说,两者都是可以异步运行的排队项目.
什么我能到目前为止区别是,工作有更多的"高级"功能/状结构$timeout
,$tries
性能和你也会耽搁工作的"触发"(的礼貌Illuminate\Bus\Queueable
性状).
还有更多我肯定,但我指出了一个突然出现的东西.
所以,问题是,两者之间的实际差异是什么,更重要的是,你何时优先于另一方?
好问题,我将从laravel文档如何解释开始
事件:Laravel的事件提供了一个简单的观察者实现,使您可以订阅和侦听应用程序中发生的各种事件。事件是分离应用程序各个方面的好方法,因为单个事件可以有多个相互不依赖的侦听器。
在哪里
Jobs:作业类非常简单,通常只包含一个handle方法,该方法在队列处理作业时被调用。
本质上,两者都将作业推送到队列上和/或对其请求的内容进行处理,我要说的主要区别是它们的调用方式。
事件在监视中被调用,而Jobs 总是被显式调用。
事件的力量在于,我们可以为一个事件注册多个侦听器,而事件帮助程序会将事件分发给所有已注册的侦听器,而无需我们明确调用它们。在乔布斯的情况下,我们必须分别明确地称呼他们。
简而言之,如果您遇到一个事件会触发多个方法调用的情况,那么事件会有所帮助。如果使用单一方法调用,乔布斯会很好。
活动方案:用户注册->发送电子邮件,发送免费赃物,为用户个人资料userxyz.site.com创建子域等
工作场景:用户注册->发送电子邮件。
嗯,它们非常相似,事件监听器将事件作为句柄方法中的参数,而作业则不然。
在您想要将触发部分与操作部分分离的情况下,事件是很好的选择。例如,当您的项目中有多个模块并且您希望一个模块对另一个模块中的事件做出反应时。
与作业相比,事件的局限性之一是作业链。例如,如果您从控制器触发多个事件,您无法确定工作人员是否按顺序分派它们以及第一个事件在另一个事件启动之前完成。
在这些(罕见的)情况下,我有时会得到(非排队的)侦听器,这些侦听器反过来调度(排队的)作业来完成实际的工作(链式或非链式)。
归档时间: |
|
查看次数: |
1940 次 |
最近记录: |