Laravel工作链

时间:2019-04-02 12:41:13

标签: php laravel jobs laravel-5.7

今天下午我一直在撕头发,试图使工作链条上班。无论发生什么情况,我都无法完成一份连锁工作。第一个总是运行并成功,但是链接将永远不会运行。

例如,我有一个类似

的事件监听器
  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()

两者都将运行。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我在工作中缺少InteractsWithQueue特性。