laravel5.5 延時隊列的使用

 

隊列這個知識相對比較冷門,由於平時的CURD基本用不到這個知識,今天用到了,因此就寫個博客記錄一下吧。php

首先你得清楚要用什麼驅動,除了database隊列驅動(選擇database驅動要php artisan queue:table   php artisan migrate執行這兩條命令,具體參考laravel學院文檔或官方文檔),還有html

Amazon SQS: aws/aws-sdk-php ~3.0laravel

Beanstalkd: pda/pheanstalk ~3.0redis

Redis: predis/predis ~1.0等spa

系統默認的是我此次選用的是redis,由於要延時60分鐘處理。code

因此在.env文件中驅動改爲redis。htm

選擇好驅動以後,固然要幹咱們的正事了,擼「隊列」代碼了。blog

先執行token

會在App\Jobs目錄下生成HandleOrder.php文件,相似隊列

這裏我已經寫過一些代碼了。因此稍微有一點差別。我這邊是訂單的延時處理。在handle()方法裏寫代碼邏輯。

在你寫完這裏的代碼邏輯以後,你一點回想,我怎麼才能跑這裏的代碼呢,別急,這個很簡單。

 在你想要調用這個隊列的地方,加上

或者

這兩條代碼是等價的。我這裏是延時60分鐘的,由於 Amazon SQS 隊列服務最大延遲 15 分鐘。因此,選用了redis。

固然,你能夠鏈式調用 onConnection 和 onQueue 方法 來同時指定任務的鏈接和隊列

而後能夠設置最大嘗試次數

php artisan queue:work --tries=3

設置最大超時數

php artisan queue:work --timeout=30

運行隊列

php artisan queue:work

還有許多其餘的操做能夠參考官網。

 

本文屬於我的原創,歡迎轉載,轉載請附連接:http://www.cnblogs.com/x-x-j/p/9041572.html

相關文章
相關標籤/搜索