Цепочка заданий Laravel

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

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

  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()

и оба побегут.

Есть идеи?

Вам не нужно возвращать true из метода handle, чтобы он классифицировался как завершенный?

Joe 02.04.2019 15:09
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
1
2 574
1

Ответы 1

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

У меня такая же проблема с вашим исходным сообщением, но все еще не работает после добавления InteractsWithQueue

Zaiman Noris 18.11.2019 10:14

Моя ошибка. Я реализую ShouldQueue для вложенных заданий. После снятия цепи работают.

Zaiman Noris 18.11.2019 10:23

Другие вопросы по теме