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

Laravel pushing jobs into different queue with low priority

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

但是我如何将一个队列推送到另一个低优先级的作业中呢?这只会将队列推入不同的作业但不会设置优先级:$job = (new ProcessPodcast($podcast))->onQueue('processing'); dispatch($job);

如果队列作业的优先级较低,是否意味着它会在没有那么多队列时稍后触发,或者低优先级作业如何工作?

dispatch((new Job)->onQueue('high'));

这段代码创建新的Job class实例,序列化并存储在名为high的队列中,但这并不意味着这个队列是一个特别的。此外,这个队列的优先级可能低于 low 队列!这只是您用来命名队列的字符串,当然强烈建议遵循一些模式以使代码对其他开发人员更具可读性。

config/queue.php 文件中,您可以定义将要处理的默认队列名称。如果您使用 php artisan queue:work 命令创建队列工作程序,那么它将监听该队列上的作业请求。但是,您可以使用 queue:work 命令中的 --queue 参数覆盖默认值:

php artisan queue:work --queue=high,low # or --queue=high,medium,low

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