【问题标题】:How to give priority in laravel jobs?如何在 laravel 工作中优先考虑?
【发布时间】:2020-03-10 18:46:05
【问题描述】:

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

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

但问题没有解决!

【问题讨论】:

    标签: laravel queue


    【解决方案1】:

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

    指定作业所属的队列

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

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

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

    【讨论】:

      【解决方案2】:

      我找到了!如果您尝试运行长期任务,请在 kernel.php 文件中使用 runInBackground()。

      $schedule->command('snippets:newsletter')
                   ->dailyAt('16:10')->runInBackground();
      

      【讨论】:

        猜你喜欢
        • 2015-12-29
        • 2014-05-23
        • 2021-11-13
        • 1970-01-01
        • 1970-01-01
        • 2021-03-18
        • 1970-01-01
        • 2018-11-25
        • 1970-01-01
        相关资源
        最近更新 更多