Laravel以低优先级将作业推送到不同的队列

时间:2017-04-16 12:48:45

标签: php laravel queue beanstalkd

现在我正在为我的队列使用Beanstalkd和Laravel forge,我这样开火:dispatch(new ProcessPodcast($podcast));

但是如何将队列推送到具有低优先级的其他作业?这只会将队列推送到不同的作业,但不会设置优先级:$job = (new ProcessPodcast($podcast))->onQueue('processing'); dispatch($job);

如果队列作业的优先级低,是否意味着稍后当没有多少队列或低优先级作业如何工作时会被解雇?

1 个答案:

答案 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

此命令还设置队列的优先级。只要队列中有任何作业请求,就会在队列中的任何请求之前处理它。