如果我有多个队列,是否可以按顺序运行所有队列,而无需在--queue
选项上为每个队列命名?
答案 0 :(得分:1)
这解决了我的问题,我不知道它是否对您有帮助。
php artisan queue:work --queue=low,high,
默认情况下,Laravel中有3个队列; “低,高”,第三个是空的。在查询中添加这3个队列并不难。
不幸的是,这将比没有queue参数的持续时间更长。它将首先完成高和低。
拥有队列名称确实很有用,有时某些队列中的作业太多,您需要控制进程数。
如果您安装了诸如Supervisor之类的进程监视器,则只需为默认队列添加另一个后台进程。不要忘记numprocs
,因为默认队列可能更重要,所以您可以将其提高到比高低队列更高的水平。
答案 1 :(得分:0)
您可以使用php artisan queue:work --queue=queue1,queue2,queue3
运行多个进程,但这将是一个进程,并且首先执行队列作业的优先级是在命令中列出队列的顺序。 (因此,在此示例中,首先是所有queue1作业,然后是所有queue2作业,依此类推)
运行以下示例将创建许多并行进程,这些进程独立监视队列而无需任何队列优先级:
php artisan queue:work --queue=queue1 & php artisan queue:work --queue=queue2 & php artisan queue:work --queue=queue3 &
我认为不支持侦听所有可能的队列,因为定义独立队列的原因是独立处理。 (例如在其他计算机上执行电子邮件作业)
答案 2 :(得分:-2)
您可以使用Symfony的Process通过PHP运行命令。
$process = new Process('php artisan queue:work --queue=your_queue');
$process->run(); // Sync
$process->start(); // Async
如果您将使用特定的队列名称,可以按documentation中的指定将其添加到侦听器。
php artisan queue:listen --queue=queue1,queue2