事件處理隊(duì)列

2018-02-24 15:52 更新

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

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

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

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

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

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

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)