阅读(1760) (10)

Laravel 8 通知队列化

2021-07-06 09:24:39 更新

注:使用通知队列前需要配置队列并 开启一个队列任务

发送通知可能是耗时的,尤其是通道需要调用额外的 API 来传输通知。为了加速应用的响应时间,可以将通知推送到队列中异步发送,而要实现推送通知到队列,可以让对应通知类实现 ShouldQueue 接口并使用 Queueable trait。如果通知类是通过 make:notification 命令生成的,那么该接口和 trait 已经默认导入,你可以快速将它们添加到通知类:

<?php

namespace AppNotifications;

use IlluminateBusQueueable;
use IlluminateContractsQueueShouldQueue;
use IlluminateNotificationsNotification;

class InvoicePaid extends Notification implements ShouldQueue
{
    use Queueable;

    // ...
} 

ShouldQueue 接口被添加到通知类以后,你可以像之前一样正常发送通知,Laravel 检测到 ShouldQueue 接口后会自动将通知的发送添加到队列:

$user->notify(new InvoicePaid($invoice)); 

如果你想要延迟通知的发送,可以在通知实例后加上 delay 方法:

$when = now()->addMinutes(10);

$user->notify((new InvoicePaid($invoice))->delay($when));