str*_*dge 27
虽然它们都可以一起工作,但我发现最简单的方法是一起查看事件和监听器,然后将Jobs和Queues放在一起.
事件和听众
事件是保存"触发"数据的对象,Laravel事件系统在触发事件对象时"捕获"事件对象,然后运行为该特定事件注册的所有监听器.
如果你考虑一下,这类似于例外的运作方式.抛出异常,您可以定义几个catch块来响应,具体取决于抛出的异常.在事件和监听器的情况下,抛出一个事件,一个或多个监听器代表一个catch块的内容.虽然类似,但事件和监听器不是错误处理程序,它们只是具有概念上的相似之处.
工作和队列
我认为考虑这些问题的最佳方式就像是银行的一条线.该行本身就是队列,该行中的每个客户都是一个Job.
要在队列中处理作业,您需要命令行进程或守护进程.考虑在命令行上启动队列守护进程,将新的银行出纳员添加到可用的银行出纳员池中.当一个守护进程可用时,它会向队列询问下一个作业,就像银行出纳员要求下一个人走到窗口一样.
每个人都有他们想要完成的特定任务,比如存款或取款.排队的人需要完成的行动是Laravel的工人.
工作人员是守护程序将从队列中获取的作业所做的事情,就像任务是银行出纳员将为从线路上前进的客户所做的事情.
希望这些都有一定道理.