今天下午我一直在撕头发,试图使工作链条上班。无论发生什么情况,我都无法完成一份连锁工作。第一个总是运行并成功,但是链接将永远不会运行。
例如,我有一个类似
的事件监听器 class PersistPreviousStatement implements ShouldQueue
{
/**
* @param StatementCreated $event
*/
public function handle(StatementCreated $event): void
{
DoOneThing::withChain([
new DoSomething()
])->dispatch();
}
}
我的两个工作类别如下:
class DoOneThing
{
use Dispatchable, Queueable;
public function handle(): void
{
$statement = Statement::find(20);
$statement->file = 'yyy';
$statement->save();
}
}
class DoSomething
{
use Dispatchable, Queueable;
public function handle(): void
{
$statement = Statement::find(10);
$statement->file = 'xxxx';
$statement->save();
}
}
在上述情况下。我的DoOneThing类正确地将记录设置为“ yyy”,但是DoSomething类未运行。如果我将订单更改为
DoSomething::withChain([
new DoOneThing()
])->dispatch();
DoSomething没有运行DoOnething。我将两个作业都设置为可排队/可调度,并且驱动程序设置为同步。我还可以像下面这样独立地相互分派工作:
DoSomething :: dispatch() DoOneThing :: dispatch()
两者都将运行。
有什么想法吗?
答案 0 :(得分:0)
我在工作中缺少InteractsWithQueue特性。