Задание Расписание работы с цепочкой Laravel 5.6 - PullRequest
0 голосов
/ 04 января 2019

Мне нужно запустить серию заданий, которые выполняются последовательно в Laravel с запланированным интервалом (еженедельно). Для этого отлично подходит метод withChain :

firstJob::withChain([
    new secondJob,
    new thirdJob
 ]);

При попытке запустить цепочку в Планировщике :

$schedule->job(firstJob::withChain([
    new secondJob,
    new thirdJob
 ]))->weekly();

Я получаю следующую ошибку:

 In BoundMethod.php line 135:

 Method Illuminate\Foundation\Bus\PendingDispatch::handle() does not exist  

Вывод, который я получаю от Планировщика в cli:

Running scheduled command: Illuminate\Foundation\Bus\PendingDispatch

Итак, я понимаю, что метод задания на самом деле не вызывает задание, а метод dispatch () в свойстве Dispatchable.

У меня вопрос, как я могу запускать цепочечные задания в Планировщике заданий Laravel?

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

Использование $schedule->call() лишает возможности указывать имя очереди и другие параметры, относящиеся к заданию.

Чтобы сохранить это, вы должны использовать команду schedule job, которая может быть связана следующим образом:

$schedule->job((new firstJob())->chain([
    new secondJob(),
    new thirdJob()
]), 'queue-name')->everyFiveMinutes();
0 голосов
/ 07 января 2019

Я исправил это, заменив $ schedule-> job () на $ schedule-> call (). Простое закрытие запускает job :: withChain (). Теперь у меня есть команда supervisord, обеспечивающая выполнение команды queue: work artisan в фоновом режиме, поэтому планировщик отвечает за запуск очереди заданий в назначенное время, которое вызывает очередь.

...