Laravel中的多个队列

问题描述 投票:2回答:2

我正在laravel中创建一个Web应用程序,用户可以在多个游戏中进行出价。招标正由前端用户和cron作业执行。 Cron工作每秒后对每场比赛进行投标。因此,当同时访问同一行时,出价之间会发生一些冲突。为了解决并发问题,我决定使用laravel队列进行出价。但我有多个游戏,因此我希望每个游戏同时出价。我不希望同一个游戏的出价同时处理,因为那时可能会出现并发问题。我想知道laravel中的多个队列系统。在互联网上搜索后,我了解了多个队列

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

但我不确定它是如何工作的。请有人详细解释我所有7个队列同时或逐个工作。

php laravel queue
2个回答
1
投票

正在寻找queue:listen命令?

queue:work将处理由队列驱动程序存储的所有待处理作业,而queue:listen将等待作业被抛出以便在它们到来时执行它们。

如果您执行php artisan queue:listen --queue=myJobQueue, myJobQueue1, myJobQueue2,..myJobQueue7,则会创建7个队列并自行侦听新任务。

在您的代码中,您可以调度以下作业:

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

您可能希望使用Supervisor之类的工具来确保queue:listen始终在后台运行。

希望这可以帮助!


0
投票

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 &

这将在后台将每个队列作为单个进程运行。

© www.soinside.com 2019 - 2024. All rights reserved.