首页 > 解决方案 > 如何在 laravel 工作中优先考虑?

问题描述

我正在尝试使用 laravel Queue 作业向我的用户发送每日通讯。一切正常。现在的问题是,因为我有 50K 订阅者,所以处理时事通讯工作可能需要一个多小时。同时,一些用户注册了,但他们不会收到确认邮件。只有当通讯工作完成时,他们才会收到确认电子邮件。如何解决这个问题?我正在尝试按如下方式使用 onQueue("low")。

$job = (new SnippetsnewsletterJob())
   ->onQueue("low");
    dispatch($job);

但问题没有解决!

标签: laravelqueue

解决方案


您跨不同队列拆分作业。这样您就可以对它们进行分类和优先排序。

指定作业所属的队列

$this->dispatch((new JobOne())->onQueue('queue1');
$this->dispatch((new JobTwo())->onQueue('queue2');

现在您将能够生成多个队列工作人员来分别处理作业:

php artisan queue:work --queue=queue1
php artisan queue:work --queue=queue2

推荐阅读