Laravel 8 匿名事件監(jiān)聽器隊列

2021-07-19 10:04 更新

手動注冊事件偵聽器時,可以將監(jiān)聽器的 Closure 閉包放在 Illuminate\Events\queueable 函數(shù)中,以指示 Laravel 使用 queue 執(zhí)行監(jiān)聽器:

use App\Events\PodcastProcessed;
use function Illuminate\Events\queueable;
use Illuminate\Support\Facades\Event;

/**
 * 注冊應用的任何其他事件
 *
 * @return void
 */
public function boot()
{
    Event::listen(queueable(function (PodcastProcessed $event) {
        //
    }));
}

像隊列任務一樣,你可以使用 onConnection, onQueuedelay 方法來自定義隊列監(jiān)聽器的執(zhí)行:

Event::listen(queueable(function (PodcastProcessed $event) {
    //
})->onConnection('redis')->onQueue('podcasts')->delay(now()->addSeconds(10))); 

如果你想處理匿名隊列監(jiān)聽器失敗,則可以在 queueable 監(jiān)聽器后的 catch 方法中提供一個閉包來處理:

use App\Events\PodcastProcessed;
use function Illuminate\Events\queueable;
use Illuminate\Support\Facades\Event;
use Throwable;

Event::listen(queueable(function (PodcastProcessed $event) {
    //
})->catch(function (PodcastProcessed $event, Throwable $e) {
    // 監(jiān)聽失敗的隊列...
})); 


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號