运行 Laravel 作业链同步

Running Laravel job chain synchronously

我有一个像这样的 Laravel 作业链

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

有时我想让它运行同步作业。

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

Call to undefined method Illuminate\Foundation\Bus\PendingChain::dispatchNow()

是否有任何其他方法可以同步 运行 作业链?

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

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

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

另一种选择,当您想在 运行 同步作业与异步作业之间轻松 "toggle" 时并不理想,它只是一个接一个地分派它们,例如:

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