php - Laravel Mail ShouldQueue 与 Job ShouldQueue

标签 php laravel laravel-5

好的,我明白了 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/

相关文章:

laravel - required_without 不使用其他规则

php - 更新表a和表b

php - 下一页的分页序号

javascript - 如何使用 $.ajax(); laravel 中的函数

laravel - 在 Laravel 中编辑表单时显示旧值的最佳实践是什么?

eloquent - Laravel 5.2 根据 Input 中的字段设置模型属性

php SoapVar 没有设置属性

javascript - HTML 图表与 MySQL 使用 Javascript PHP

php - 如何在php:7.4-fpm-alpine docker容器中启用xdebug?

left-join - Laravel 5,连接子句中的派生表?