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