Laravel&Lumen系統(tǒng)之隊列服務

一般而言有些會阻塞運行程序的任務浮创,我們會采用隊列服務已經異步調用果正,這樣可以實現非阻塞服務。之前有個需求是調用支付寶的服務郑叠,因為調用第三方的服務時間和成功不可控,所以處理成隊列異步服務明棍,發(fā)現功能竟然不可用乡革,所以一步一步排查后解決這個問題。

  1. 首先要確認的是隊列的代碼是否正確摊腋,Lumen和Laravel一樣沸版,都是需要繼承虛擬基類Job,并且在handle方法中實現業(yè)務代碼兴蒸。
class DeleteBill extends Job
{
    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        *****
    }
}
  1. 確認調用處調用隊列服務的地方是否正確视粮。這里需要注意的是,Laravel文檔里是用的dispatch分發(fā)調用:$this->dispatch(new DeleteBill()); 另外還有一種方法是使用Queue對象的push方法:Queue::push(new DeleteBill());這兩種方式都是可以調用成功橙凳,它會把任務塞到相應的隊列中蕾殴。
  2. 接下來是要檢查系統(tǒng)的隊列服務配置是否正確笑撞,可以查看config文件夾下的queue.php的配置。隊列一般支持"sync", "database", "beanstalkd","sqs", "iron", "redis"這幾種区宇,我們可以自定義自己的具體配置方式:
'default' => env('QUEUE_DRIVER', 'sync')

類似于這樣配置娃殖,在env文件中想要配置哪種都可以值戳。本人使用的是redis服務议谷,然后在database.php查看redis配置:

'redis' => [
    'cluster' => env('REDIS_CLUSTER', false),
    'default' => [
        'host'     => env('REDIS_HOST', '121.41.13.126'),
        'port'     => env('REDIS_PORT', 6379),
        'database' => env('REDIS_DATABASE', 0),
        'password' => env('REDIS_PASSWORD', null),
    ],
]
  1. 查看服務器對應的配置和服務器redis啟動參數是否正確,可以使用命令:ps aux | grep redis-server來查看服務是否啟動以及對應的端口號堕虹。
  2. 這些都正確卧晓,然后來看下Laravel&Lumen啟動隊列服務,使用php artisan queue:work來消費隊列中的服務赴捞,至于隊列錯誤重復次數設定還有超時時間等增強功能可以查看Laravel文檔來仔細解讀逼裆。
  3. 最后我們使用Supervisor來監(jiān)控隊列,它將會在失敗時自動重啟queue:listen或queue:work命令赦政,這樣就可以達到隨時分發(fā)的任務都可以被消費胜宇,這是比較方便的。以下是安裝以及配置Supervisor的相關命令:
sudo apt-get install supervisor
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02dcommand=php /home/forge/app.com/artisan queue:work sqs --sleep=3 --tries=3 --daemonautostart=true
autorestart=true
user=forge
numprocs=8
redirect_stderr=true
stdout_logfile=/home/forge/app.com/worker.log
sudo supervisord -c /etc/supervisord.confsudo 
supervisorctl -c /etc/supervisor/supervisord.conf
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker:*

這次排查整個隊列服務恢着,使得對于框架整個隊列服務有了深刻的理解桐愉。以這邊文章來記錄整個過程。

大家喜歡可以訪問我的個人網站:http://www.yingminxing.com
如有疑問掰派,歡迎溝通交流:QQ:370399195, 微信:yingminxing1988

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末从诲,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子靡羡,更是在濱河造成了極大的恐慌系洛,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件略步,死亡現場離奇詭異描扯,居然都是意外死亡,警方通過查閱死者的電腦和手機趟薄,發(fā)現死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門荆烈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人竟趾,你說我怎么就攤上這事憔购。” “怎么了岔帽?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵玫鸟,是天一觀的道長。 經常有香客問我犀勒,道長屎飘,這世上最難降的妖魔是什么妥曲? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮钦购,結果婚禮上檐盟,老公的妹妹穿的比我還像新娘。我一直安慰自己押桃,他們只是感情好葵萎,可當我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著唱凯,像睡著了一般羡忘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上磕昼,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天卷雕,我揣著相機與錄音,去河邊找鬼票从。 笑死漫雕,一個胖子當著我的面吹牛,可吹牛的內容都是我干的峰鄙。 我是一名探鬼主播浸间,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼先馆!你這毒婦竟也來了发框?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤煤墙,失蹤者是張志新(化名)和其女友劉穎梅惯,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體仿野,經...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡铣减,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了脚作。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片葫哗。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖球涛,靈堂內的尸體忽然破棺而出劣针,到底是詐尸還是另有隱情,我是刑警寧澤亿扁,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布捺典,位于F島的核電站,受9級特大地震影響从祝,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一嘱能、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧员咽,春花似錦、人聲如沸贮预。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽萌狂。三九已至档玻,卻和暖如春怀泊,著一層夾襖步出監(jiān)牢的瞬間茫藏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工霹琼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留务傲,地道東北人。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓枣申,卻偏偏與公主長得像售葡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子忠藤,可洞房花燭夜當晚...
    茶點故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理挟伙,服務發(fā)現,斷路器模孩,智...
    卡卡羅2017閱讀 134,696評論 18 139
  • 隊列 簡介 laravel 的隊列服務對各種不同的后臺隊列服務提供了統(tǒng)一的 API尖阔。隊列允許你延遲執(zhí)行消耗時間的任...
    Dearmadman閱讀 20,746評論 7 26
  • Composer Repositories Composer源 Firegento - Magento模塊Comp...
    零一間閱讀 3,960評論 1 66
  • 隊列常常用于兩種場景,一種是高并發(fā)的情況榨咐,一種是耗時的操作介却,可以將任務放到隊列中去,消費者從隊列取任務執(zhí)行块茁,當然還...
    金星show閱讀 1,744評論 2 0
  • 原文鏈接 必備品 文檔:Documentation API:API Reference 視頻:Laracasts ...
    layjoy閱讀 8,609評論 0 121