Как отдать приоритет в laravel заданиях? - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь отправлять ежедневные информационные бюллетени своим пользователям, используя laravel Задания в очереди. все работает нормально. Теперь проблема в том, что у меня 50 000 подписчиков, поэтому обработка заданий на рассылку может занять более часа. и в то же время некоторые пользователи зарегистрировались, но не получили подтверждение по электронной почте. они получат подтверждение по электронной почте, только если работа с бюллетенем завершена. как можно решить эту проблему? Я пытаюсь сделать это следующим образом, чтобы использовать onQueue ("низкий").

$job = (new SnippetsnewsletterJob())
   ->onQueue("low");
    dispatch($job);

, но проблема не решена!

Ответы [ 2 ]

0 голосов
/ 10 марта 2020

Я нахожу это! если вы пытаетесь запустить долгосрочную задачу, тогда используйте runInBackground () в ядре. php file.

$schedule->command('snippets:newsletter')
             ->dailyAt('16:10')->runInBackground();
0 голосов
/ 10 марта 2020

Вы разделены на задания в разных очередях. Таким образом, вы сможете классифицировать и расставлять приоритеты.

Укажите, к какой очереди принадлежит задание

$this->dispatch((new JobOne())->onQueue('queue1');
$this->dispatch((new JobTwo())->onQueue('queue2');

Теперь вы сможете порождать нескольких работников очереди для обработки заданий по отдельности:

php artisan queue:work --queue=queue1
php artisan queue:work --queue=queue2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...