我有这样的Laravel工作链
Job1::withChain([
new Job2(),
new Job3(),
new Job4()
])->dispatch();
有时候我希望它同步运行作业。
但是当我将->dispatch()
更改为->dispatchNow()
时,我得到了
调用未定义的方法Illuminate \ Foundation \ Bus \ PendingChain :: dispatchNow()
还有其他同步运行工作链的方法吗?
答案 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();