【问题标题】:How can I change the Job Queue processing in Laravel?如何更改 Laravel 中的作业队列处理?
【发布时间】:2018-02-13 06:57:18
【问题描述】:

我的队列中有三份工作;

  • 一个
  • 乙
  • C

其中一个的重试次数设置为 100。

当我的所有作业都失败时,Laravel 会按照以下方案运行作业;

  • 一个1
  • B 1
  • C 1

然后;

  • A 2
  • B 2
  • C 2

我想把这个行为改成下面的方案;

  • 100(到失败的表)
  • B 1
  • C 0

所以我希望以前的工作阻止 tikk 他们达到重试计数,然后继续下一个工作。

如何使用 Laravel 的 Job 系统实现这一点?

(我不能用chain方法链接我的软件层上的作业,我想通过配置来实现)

【问题讨论】:

  • 如果事情要同步完成,那为什么要把它们作为工作呢?
  • 因为我没有编写项目代码

标签: php laravel queue laravel-5.1 job-queue


【解决方案1】:

您可以使用Job Events 来控制它们被推送到队列中的顺序。一旦作业 A 成功完成,作业 B 通过事件侦听器启动,作业 C 也是如此。作业 A 可以重试 100 次,但无法触发作业 B。

【讨论】:

    【解决方案2】:

    如果这是一项工作,您无法通过该工作控制另一项工作... 工作是异步工作的。您需要同步完成工作:)

    因此,或者您将所有内容都转移到一项工作中,或者您无法以另一种方式进行:)

    当然,您可以命名您的队列,并以优先级运行并仅设置 1 个工作人员...但这不是一个好的选择,您不能很好:)


    此外,您可以在完成一项工作后解雇工作。只需在完成后将创建作业从您的控制器(?)转移到作业中。我在自己的系统中实现了该解决方案。只有完成了一项工作,然后才是解雇

    【讨论】:

    • 我想没有任何方法可以按您指出的顺序运行作业。我将使用您的答案并实现我自己的架构。每个作业都会从passive jobs table 获取下一个作业并将其添加到作业队列中。
    猜你喜欢
    • 1970-01-01
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-07
    • 2018-07-15
    • 2016-03-15
    • 2016-05-26
    相关资源
    最近更新 更多