Несколько очередей в Laravel - PullRequest
0 голосов
/ 29 мая 2018

Я создаю веб-приложение на laravel, в котором пользователи делают ставки в нескольких играх.Торги проводятся внешними пользователями, а также работой cron.Работа Cron делает ставку на каждую игру после каждой секунды.Поэтому между предложениями происходило некоторое столкновение, когда к одному и тому же ряду обращались одновременно.Чтобы решить проблему параллелизма, я решил использовать очереди ставок для торгов.Но у меня есть несколько игр, и поэтому я хочу, чтобы ставки каждой игры были одновременно.Я не хочу, чтобы ставки одной и той же игры обрабатывались в одно и то же время, потому что тогда может возникнуть проблема параллелизма.Я хочу знать о системе множественных очередей в Laravel.После поиска в Интернете я узнал о нескольких очередях, таких как

php artisan queue:work --queue=myJobQueue, myJobQueue1, myJobQueue2,..myJobQueue7

Но я не уверен, как это работает.Пожалуйста, кто-нибудь объяснит мне подробно, что все 7 очередей работают одновременно или одна за другой.

Ответы [ 2 ]

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

php artisan queue:work --queue=myJobQueue, myJobQueue1, myJobQueue2,..myJobQueue7 устанавливает приоритет, в котором будут выполняться очереди.Таким образом, при этом все задания на myJobQueue будут выполняться до перехода к выполнению заданий на myJobQueue1, а затем на myJobQueue2 в указанном порядке.

Однако если вы хотите, чтобы задания в этих очередях выполнялись одновременно, выможет запускать каждую очередь в фоновом режиме.

php artisan queue:work --queue=myJobQueue & php artisan queue:work --queue=myJobQueue1 & php artisan queue:work --queue=myJobQueue2 &

Это будет запускать каждую очередь как отдельные процессы в фоновом режиме.

0 голосов
/ 29 мая 2018

Ищете команду queue:listen?

queue:work будет обрабатывать все ожидающие задания, которые хранятся драйвером очереди, тогда как queue:listen будет ожидать, пока в него будут брошены задания для их выполнения по мере их поступления.

Есливы делаете php artisan queue:listen --queue=myJobQueue, myJobQueue1, myJobQueue2,..myJobQueue7, 7 очередей создаются и самостоятельно прослушивают новые задачи.

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

dispatch((new MyJob)->onQueue('myJobQueue'));

Возможно, вы захотитеиспользовать такой инструмент, как Supervisor , чтобы убедиться, что queue:listen всегда работает в фоновом режиме.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...