laravel - 同步运行 Laravel 作业链

标签 laravel laravel-5.8 laravel-queue

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

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

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

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

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

还有其他方法可以同步运行作业链吗?

最佳答案

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

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

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

另一种选择(当您想要在同步运行作业与异步运行作业之间轻松“切换”时并不理想)是一个接一个地分派(dispatch)它们,例如:

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

关于laravel - 同步运行 Laravel 作业链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59300730/

相关文章:

php - 如何进行 SQL 的 Laravel 迁移

javascript - 单击旁边的表格单元格时选中表格中的复选框

php - laravel - 更新一对多多态关系

php - Laravel 动态单例绑定(bind)无法通过 Queue Worker 解析

php - Laravel 5 运行队列 :work on laravel schedule

mysql - 如何连接 Car_type、Model 和 Mark Car Laravel mysql

javascript - 如何在 Laravel 中使用 React Router?

laravel - 将 Firebase Firestore 连接到 laravel

laravel - 在 View 上显示数据时尝试获取非对象的属性 'column_name'

multithreading - 如何处理laravel作业的多个线程?