【问题标题】:Laravel Queue start a second job after first jobLaravel 队列在第一份工作后开始第二份工作
【发布时间】:2017-12-10 14:11:14
【问题描述】:

在我的 Laravel 5.1 项目中,我想在第一份工作完成时开始我的第二份工作。

这是我的逻辑。

\Queue::push(new MyJob())

当这项工作完成后,我想开始这项工作

\Queue::push(new ClearJob())

我怎么能意识到这一点?

【问题讨论】:

  • 不是 100% 确定这是最好的解决方案,但我知道 job events 功能:laravel.com/docs/5.4/queues#job-events。您可以在Queue::after() 方法中为MyJob 启动ClearJob
  • 为什么不在第一份工作结束时分派第二份工作呢? $this->dispatch(new ClearJob()); 您需要确保 Job 也具有 DispatchesJobs 特征。
  • 我需要使用的地方。吗?

标签: laravel queue


【解决方案1】:

如果你想要这个,你应该定义 1 Queue

队列只是等待按顺序处理的列表/行, 从头开始。当我说事情时,我指的是工作。 - https://toniperic.com/2015/12/01/laravel-queues-demystified

要获得与您想要的相反的结果:异步执行的作业,您应该为每个 Job 定义一个新的 Queue

多个队列和工作者

您可以有不同的队列/列表 存储作业。您可以随意命名它们,例如“图像” 用于推送图像处理任务,或用于保存队列的“电子邮件” 特定于发送电子邮件的工作。你也可以有多个工人, 如果您愿意,每个人都在不同的队列上工作。你甚至可以拥有 每个队列有多个工作人员,因此有多个工作正在工作 同时开启。请记住,拥有多个工人会带来 CPU和内存成本。看官方文档,挺好看的 直截了当。

【讨论】:

    猜你喜欢
    • 2020-06-18
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多