如何更改Laravel中的作业队列处理?

时间:2018-02-13 06:57:19

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

我的队列中有三个工作;

  • A
  • B
  • C

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

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

  • A 1
  • B 1
  • C 1

然后;

  • A 2
  • B 2
  • C 2

我想将此行为更改为以下方案;

  • A 100(失败表)
  • B 1
  • C 0

所以我希望之前的工作能够阻止他们达到重试次数,然后继续下一份工作。

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

(我无法使用链式方法在我的软件层上链接作业。我希望通过配置来实现这一点)

2 个答案:

答案 0 :(得分:0)

如果这是一份工作,你无法控制那份工作......工作是异步工作的。你需要同步完成任务:)

所以,或者你把所有东西都搬到一个工作岗位上,或者你不能用另一种方式去做:)

当然,你可以为你的队列命名,并按照优先顺序运行并只设置1名工作人员...但这不是一个好的选择,你可能不会很好:)

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

答案 1 :(得分:0)

您可以使用Job Events来控制将它们推送到队列的顺序。作业A成功完成后,作业B通过事件监听器启动,对于作业C也是如此。作业A可以重试100次而无法触发作业B.