现在我正在为我的队列使用Beanstalkd和Laravel forge,我这样开火:dispatch(new ProcessPodcast($podcast));
但是如何将队列推送到具有低优先级的其他作业?这只会将队列推送到不同的作业,但不会设置优先级:$job = (new ProcessPodcast($podcast))->onQueue('processing'); dispatch($job);
如果队列作业的优先级低,是否意味着稍后当没有多少队列或低优先级作业如何工作时会被解雇?
答案 0 :(得分:2)
dispatch((new Job)->onQueue('high'));
这段代码创建新的Job
类实例,将其序列化并存储在名为 high 的队列中,但这并不意味着此队列是特殊的。此外,此队列的优先级低于 low 队列!这只是一个用于命名队列的字符串,当然强烈建议遵循一些模式,以使代码对其他开发人员更具可读性。
在config/queue.php
文件中,您可以定义将要处理的默认队列名称。如果使用php artisan queue:work
命令创建队列工作程序,那么它将侦听该队列上的作业请求。但是,您可以使用--queue
命令中的queue:work
参数覆盖默认值:
php artisan queue:work --queue=high,low # or --queue=high,medium,low
此命令还设置队列的优先级。只要高队列中有任何作业请求,就会在低队列中的任何请求之前处理它。