微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel:获取具有动态队列名称的作业来工作

如何解决Laravel:获取具有动态队列名称的作业来工作

我的 Laravel 应用程序正在向用户发送电子邮件,而第一封电子邮件是即时的,以下将有延迟。用户可以选择电子邮件间隔(认为 5 分钟)。

我的目标是为每个队列指定原因的名称,因此如果发送电子邮件的原因不再存在,我可以从数据库删除所有相关队列。现在我可以收到一封电子邮件,说我的服务正在运行,几分钟后我收到一条通知,说它没有运行。

我的问题是,由于队列名称是动态的,我不知道如何启动它们。

PHP artisan queue:work 仅在名称default

时有效

这是我定义队列名称的方式:

class ServiceEmail extends Notification implements ShouldQueue
{
    use Queueable;

    protected $service_name

    public function __constructor($service_name)
    {
        $this->queue = $service_name
    }

    public function via($notifiable)
    {
        return $notifiable->notification_opts;
    }

    public function toMail($notifiable)
    {
        return (new ServiceMessage)
               ->subject("Alert!")
               ->markdown("mail.service.alert")
    }
}

这样可以有数百个不同的队列名称

我看到作业写在我的 postgres 数据库中,但从未执行过。 PHP artisan queue:workPHP artisan queue:listen 都没有帮助。

有没有办法让我目前错过的工作付诸行动?

PS:如果有人知道一种专门杀死某些作业而不遍历它们的方法,请反序列化有效负载以检查名称是否在字符串内,如果是,则删除队列 - 我也会非常高兴!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。