事件處理隊列

2018-02-24 15:52 更新

需要把事件處理程序放到 隊列 嗎?這不能變得再更簡單了。當(dāng)你產(chǎn)生處理程序,簡單地使用 --queued 旗標(biāo):

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

這將會產(chǎn)生一個實現(xiàn)了 Illuminate\Contracts\Queue\ShouldBeQueued 接口的處理程序類。這樣就可以了!現(xiàn)在當(dāng)這個處理程序因為事件發(fā)生被調(diào)用,它將會被事件配送器自動地排進(jìn)隊列。

當(dāng)處理程序被隊列執(zhí)行,如果沒有異常被丟出,在執(zhí)行后該隊列中的任務(wù)將會自動被刪除。你也可以手動取用隊列中的任務(wù)的 delete 和 release 方法。隊列處理程序默認(rèn)會引入的 Illuminate\Queue\InteractsWithQueue trait,讓你可以取用這些方法:

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

如果你想要把一個已存在的處理程序轉(zhuǎn)換成一個隊列的處理程序,簡單地手動添加 ShouldBeQueued 接口到類。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號