同步运行Laravel工作链

时间:2019-12-12 08:49:45

标签: laravel laravel-5.8 laravel-queue

我有这样的Laravel工作链

Job1::withChain([
  new Job2(),
  new Job3(),
  new Job4()
])->dispatch();

有时候我希望它同步运行作业。

但是当我将->dispatch()更改为->dispatchNow()时,我得到了

  

调用未定义的方法Illuminate \ Foundation \ Bus \ PendingChain :: dispatchNow()

还有其他同步运行工作链的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用allOnConnection方法并在sync连接上运行它们:

Job1::withChain([
  new Job2(),
  new Job3(),
  new Job4()
])->dispatch()->allOnConnection('sync');

只需检查driver文件中sync连接的config/queue.php确实是'sync'

另一种方法不是理想的选择,当您想轻松地在同步运行和异步运行作业之间“切换”时,就是将它们一个接一个地分派,例如:

Job1::dispatchNow();
Job2::dispatchNow();
Job3::dispatchNow();
Job4::dispatchNow();