Swoole 實現Beanstalkd進程管理器

Jober 工作界面:

Jober running...

產生背景:

項目中經常會有後臺運行任務的需求,比如發送郵件時,因爲要連接郵件服務器,往往需要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 隊列配置文件


那麼開始實現如上步驟:

  1. 安裝命令:composer create-project jober/jober [步驟一]
    在這裏插入圖片描述

  2. composer require swiftmailer/swiftmailerr 安裝完成類庫,接下來我們封裝一下

  3. cd /home/jober/app/utils 創建class文件:MailBox.php [可以發送郵件了] [步驟二]
    在這裏插入圖片描述
    4.創建 app\Jobs\MailboxJob.php 文件, 實現IJob接口:[步驟三]
    在這裏插入圖片描述

  4. 業務邏輯已經寫好、郵件服務類已裝備好。那麼我們把這個隊列添加到配置文件中吧![步驟四]

    配置文件: app/config/queue.php, 多條隊列監控添加多條即可
    在這裏插入圖片描述

  5. job 就是實現IJob接口的,MailboxJob類文件;那麼如何添加呢?
    在這裏插入圖片描述
    提醒: 一定要寫成如圖,雙斜線:
    在這裏插入圖片描述

  6. 接下來我們就來啓動jober,看下效果: 服務啓動成功!!!在這裏插入圖片描述

  7. 投遞定時郵件:
    在這裏插入圖片描述

  8. 看吧!我們已經驚喜的收到了郵件:
    在這裏插入圖片描述
    到此就結束了:

    1, 想要看完整代碼案例,請點開 https://github.com/twomiao/Jober Git 地址。

    2,小夥伴們,記得給我Star喲。Thanks♪(・ω・)ノ

    3,你們的支持就是我的動力。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章