如何解决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:work
或 PHP artisan queue:listen
都没有帮助。
有没有办法让我目前错过的工作付诸行动?
PS:如果有人知道一种专门杀死某些作业而不遍历它们的方法,请反序列化有效负载以检查名称是否在字符串内,如果是,则删除队列 - 我也会非常高兴!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。