Laravel работа цепочки - PullRequest
       12

Laravel работа цепочки

2 голосов
/ 02 апреля 2019

Сегодня я рвал на себе волосы, пытаясь заставить работать цепочку.Что бы ни случилось, я не могу получить работу в цепочке.Первый всегда работает и успешно, но цепочка никогда не будет работать.

Например, у меня есть прослушиватель событий типа

  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 голосов
/ 02 апреля 2019

Мне не хватало черты InteractsWithQueue в моей работе.

...