Как выполнить задание из очереди? - PullRequest
0 голосов
/ 25 октября 2018

Я использую Laravel Queue с драйвером базы данных для задержки некоторых задач.

Однако я не могу запустить созданный рабочий по причинам.Вместо этого я решил использовать планировщик для вызова собственного работника каждые 5 минут.

Однако я не могу по-настоящему понять, как реализовать работника, и я не могу полностью разобраться в исходном коде самостоятельно.Я хотел бы получить задания из базы данных и запустить их.Как это сделать?

Существует ли какая-то общая модель для заданий, которая может правильно их загружать, например DatabaseJob::whereDate(......)->get()?

Нужно ли загружать что-то (полезную нагрузку?) Для заданий или будетпроизойдет автоматически?Какие методы мне нужны для выполнения работы?справиться?Пожар?Или что-то еще?

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Вы можете запускать команды ремесленников из своего кода, используя метод call() на фасаде Artisan.Например, он обработает все готовые задания из очереди по умолчанию и завершит работу, когда это будет сделано:

Artisan::call('queue:work', ['--stop-when-empty' => true])

Из документов :

Иногда вы можете выполнить команду Artisan за пределами CLI.Например, вы можете запустить команду Artisan с маршрута или контроллера.Для этого вы можете использовать метод call на фасаде Artisan.Метод call принимает либо имя команды, либо класс в качестве первого аргумента, а массив параметров команды - в качестве второго аргумента.Будет возвращен код выхода:

Route::get('/foo', function () {
    $exitCode = Artisan::call('email:send', [
        'user' => 1, '--queue' => 'default'
    ]);

    // });

Тот же синтаксис будет работать для планирование :

$schedule->command('queue:work', [...])->everyFiveMinutes();

Как и другиеуказали, что выполнение работника внутри schedule:run может привести к нежелательному поведению, такому как пропущенные запланированные задачи.

Если у вас есть вопросы о том, как работает диспетчеризация и запуск заданий в очереди, это местодля начала: https://laravel.com/docs/5.7/queues

0 голосов
/ 25 октября 2018

Вы можете настроить горизонт для ссылки ссылки мониторинга заданий очереди:

https://laravel.com/docs/5.7/horizon

или Выполнить предварительно Artisan cmd

php artisan queue:listen database --queue=high

...