我有一些执行CRUD,上传和电子邮件的活动。我想排队这些事件。我做了一些研究,发现我需要做的就是配置我的队列驱动程序并在我的事件监听器中实现ShouldQueue契约。由于我使用redis作为我的缓存和会话驱动程序,我继续使用redis作为我的队列驱动程序。当我在不使用ShouldQueue的情况下触发我的事件时,一切正常,我收到电子邮件,数据被添加到DB ..etc。但是,当我将ShouldQueue添加到我的事件侦听器并运行队列时:listen我触发了我的事件但没有在队列中添加或执行任何内容。我也没有收到任何电子邮件,数据库等等。我错过了什么?以下是我的代码示例:
.env文件
QUEUE_DRIVER=redis
应用\活动\联系我们\ CustomerContactUs
use SerializesModels;
/**
* Create a new event instance.
*/
public function __construct()
{
}
应用\监听\ ContactedUs \ SendCustomerEmailToUs
private $mailer;
private $request;
public function __construct(Mailer $mailer, Request $request)
{
$this->mailer = $mailer;
$this->request = $request;
}
public function handle(CustomerContactedBullard $event)
{
....
$this->mailer->send('public.emails.contact_us',$this->request->all(),$params);
}
ContactUsController
event(new ContactedUs\CustomerContactedUs());
终端我跑
php artisan queue:listen
谢谢
答案 0 :(得分:0)
您应该在EventServiceProvider中添加有效条目,如下所示:
protected $listen = [
\App\Events\ContactUs\CustomerContactUs:class => [
\App\Listeners\ContactedUs\SendCustomerEmailToUs::class,
],
];