事件处理队列

2018-02-24 15:52 更新

需要把事件处理程序放到 队列 吗?这不能变得再更简单了。当你产生处理程序,简单地使用 --queued 旗标:

php artisan handler:event SendPurchaseConfirmation --event=PodcastWasPurchased --queued

这将会产生一个实现了 Illuminate\Contracts\Queue\ShouldBeQueued 接口的处理程序类。这样就可以了!现在当这个处理程序因为事件发生被调用,它将会被事件配送器自动地排进队列。

当处理程序被队列执行,如果没有异常被丢出,在执行后该队列中的任务将会自动被删除。你也可以手动取用队列中的任务的 delete 和 release 方法。队列处理程序默认会引入的 Illuminate\Queue\InteractsWithQueue trait,让你可以取用这些方法:

public function handle(PodcastWasPurchased $event)
{
    if (true)
    {
        $this->release(30);
    }
}

如果你想要把一个已存在的处理程序转换成一个队列的处理程序,简单地手动添加 ShouldBeQueued 接口到类。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号