天天看點

laravel學習筆記--消息隊列

通過隊列,你可以将耗時任務 (如發送電子郵件) 的處理往後推延。延遲這些耗時的任務可以極大地提升 web 請求響應速度

隊列配置檔案存儲在 config/queue.php 中。

在這個檔案中,你可以找到架構中包含的每個隊列驅動程式的連接配接配置,其中包括資料庫,Beanstalkd,Amazon

SQS,Redis,和一個同步驅動程式(供本地使用)。還包括一個用于丢棄排隊任務的 null 隊列驅動

驅動程式說明和先決條件

資料庫

要使用 database 隊列驅動程式,需要一個資料庫表來儲存任務。要生成建立此表的遷移

php artisan queue:table
           

去修改項目使用的隊列驅動

在.env裡面,QUEUE_CONNECTION=database,這個就是将驅動修改成database的驅動

開啟隊列,因為隊列是需要開啟才可以使用的,一旦開啟,他不會主動關閉,除非是把環境關閉

php artisan queue:work
           

使用消息隊列處理耗時處理,比如:

在消息隊列ProcessPodcast類中去編寫模拟耗時任務

public function handle()
    {
        //開始發送郵件,需要5秒才能發送完成
        info('開始發送郵件');
        sleep(5);
        info('郵件發送成功');
    }
           

然後去使用它,

//使用隊列發送郵件
        ProcessPodcast::dispatch();
        return '你好啊';
           

這樣是不需要去等待的,如果是沒有使用隊列時,它會等待任務處理完才會響應頁面

然後,每次執行一次隊列,它都會在使用遷移生成的資料庫檔案jobs中去添加消息,一旦這個任務處理完後,資料庫中的資料才會被删除

laravel學習筆記--消息隊列