Я создаю 5 очередей с именами q1, q2..q5 каждая имеет задание для выполнения. Чтобы запустить все 5 заданий одновременно, поместите каждое задание в разные очереди.
с помощью команды artisan, я могу запустить каждую очередь в отдельных консолях
php artisan queue:work --queue:q1
php artisan queue:work --queue:q2
..
..
php artisan queue:work --queue:q5
Я получил успех с вышеупомянутой командой в консоли. Но теперь мне нужно выполнить вышеуказанные команды в коде без использования консоли.
Поэтому я попытался с кодом ниже, чтобы выполнить.
\Illuminate\Support\Facades\Artisan::call("queue:work", ["--queue" => "q1"]);
\Illuminate\Support\Facades\Artisan::call("queue:work", ["--queue" => "q2"]);
..
..
\Illuminate\Support\Facades\Artisan::call("queue:work", ["--queue" => "q5"]);
Но проблема в том, что q2 выбирается только после завершения q1, что означает, что очереди выполняются последовательно, а не параллельно.
я использовал sync
опция для драйвера очереди. Это также сначала выполняет q1, а затем выбирает q2 только после завершения q1.
Моя техническая конфигурация
Queue drive: database
Os: windows
Laravel version: 5.5, Lumen 5.4
Mysql Database.
Задача ещё не решена.
Других решений пока нет …