好的,我明白了 ShouldQueue 的想法,它可以让应用程序运行得更流畅。
但我不明白的是,使用 Mailable 与 ShouldQueue 与使用 Job 与 ShouldQueue 之间的区别。
如果我将 Mailable 与 ShouldQueue 一起使用并像平常一样发送邮件,则邮件会排队,然后应该由工作人员发送。
如果我将 Job 与 ShouldQueue 一起使用,它会执行相同的操作,但多了 1 个类(感觉有点多余)。那么在我的用例中,看起来使用 Job 是浪费时间?
谁能告诉我使用 Job 比 Mailable 有什么好处? :)
最佳答案
当您使用 ShouldQueue
合约分派(dispatch)作业时,它将被添加到队列中(如果未指定默认
队列)。在此流程执行期间,当您创建具有相同合约的 Mailable
时,它将被排队到同一队列或另一个队列。
与大多数情况一样,您的问题的答案是视情况而定。
例如:
- 如果您必须分派(dispatch)具有特定逻辑的作业,该逻辑需要大量时间才能执行,并且当该任务结束时,您必须通知大量用户,那么答案是将作业和 Mailable 都放入队列并在 2 个不同的队列中。
- 如果您只需通知用户,请排队作业并直接发送 Mailable。
- 如果您必须通知用户重置密码,并且您只有几次密码重置请求,请直接发送可邮寄邮件。
- ......
恕我直言,好处取决于您必须做什么。通常,您需要完成的任务越多,就需要更多的队列。无论如何,使用队列总是更好,以便向用户返回简单、快速的响应并单独处理其余部分。
例如,如果用户注册成功,但 mailable 抛出错误,它将在 failed_job_table
上创建一条记录,而不告诉用户他/她的注册失败。
关于php - Laravel Mail ShouldQueue 与 Job ShouldQueue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59192272/