Jober 工作界面:
產生背景:
項目中經常會有後臺運行任務的需求,比如發送郵件時,因爲要連接郵件服務器,往往需要5-10秒甚至更長時間,如果能先給用戶一個成功的提示信息,然後在後臺慢慢處理髮送郵件的操作,顯然會有更好的用戶體驗。
當然實際情況遠不止這一點,我們可以通過Jober的配合完成 “訂單超時關閉、自動評論、QQ郵箱定時發送功能等等”。
Jober 是什麼
通過Swoole 官方提供Swoole/Process API才得以完成,Jober 相當於每個子進程。如果你開啓8個Jober,那麼就是8個進程同時消費。
核心特點
-
命令行:快速實現消息中間件消費、支持守護進程、常駐內存;
-
自動加載:基於 PSR-4 ,完全使用 Composer 構建;
-
模塊化:支持 Composer ,可以很方便的使用第三方庫;
-
客戶端:支持Beanstalk, 理論上來說還支持RabbitMQ並且可以多進程爬蟲等等;
-
Jober 特性:
-
可通過Queue.php配置,指定隊列分配不同Jober數量;
-
可通過配置Crontab, 對每個隊列掃描頻率控制;
-
分配的每個Jober,完成5000個任務後自動退出重啓;[ 防止內存泄漏 ]
-
用戶停止Jober運行,管理者進程會接收到信號;通知Jober執行完手頭任務在退出;
-
實際案例,我們想要做這樣一個功能:
- QQ郵箱定時發送郵件的功能
完成步驟如下所示:
-
jober 安裝
-
jober 郵件類的封裝
-
jober 發送郵件的邏輯寫在哪呢?
-
jober 隊列配置文件
那麼開始實現如上步驟:
-
安裝命令:composer create-project jober/jober [步驟一]
-
composer require swiftmailer/swiftmailerr 安裝完成類庫,接下來我們封裝一下
-
cd /home/jober/app/utils 創建class文件:MailBox.php [可以發送郵件了] [步驟二]
4.創建 app\Jobs\MailboxJob.php 文件, 實現IJob接口:[步驟三]
-
業務邏輯已經寫好、郵件服務類已裝備好。那麼我們把這個隊列添加到配置文件中吧![步驟四]
配置文件: app/config/queue.php, 多條隊列監控添加多條即可
-
job 就是實現IJob接口的,MailboxJob類文件;那麼如何添加呢?
提醒: 一定要寫成如圖,雙斜線:
-
接下來我們就來啓動jober,看下效果: 服務啓動成功!!!
-
投遞定時郵件:
-
看吧!我們已經驚喜的收到了郵件:
到此就結束了:1, 想要看完整代碼案例,請點開 https://github.com/twomiao/Jober Git 地址。
2,小夥伴們,記得給我Star喲。Thanks♪(・ω・)ノ
3,你們的支持就是我的動力。