場景:適用於大部分消息隊列場景,我列舉幾個常見地方:訂單自動取消並歸還庫存,自動收貨,羣發郵件,推送微信消息模板,異步郵件發送,會員到期自動取消. . . . . 等等。
一、我們開始看下這個消息端系統的實現流程。
- 然後把業務邏輯寫在Job類,分別兩個方法 [ doJob => 自定義業務, after=> 業務後續操作]
二、Serve-Queue 詳細講解流程:
- 安裝 git clone https://github.com/twomiao/Serve.git , 然後執行命令:Composer install
-
cd Serve/app/ 打開目錄,效果圖:
3. 目錄介紹: Config、Services、Utils、Job、Func
1). Config 配置文件目錄 (Redis, MySQL, Serve-Queue)
2). Services 業務分層 ( OrderService)
3). Utils 工具類 (郵件,短信等等), Helper 等同
4). Job 目錄 (Job::doJob() 業務編寫在裏面,不要更改Job類名稱)
5). Func 常用函數 ( env, db爲例)
6). log 日誌目錄以及TEST目錄(模擬數據文件在裏面)
二、Serve-Queue 運行流程:
- php serve start 命令啓動:
- 投遞模擬數據, 通過 php test/placeOrder.php 1000
- swoole 開始多進程處理,訂單數據
- php serve reload:平滑重啓Task進程,等同更新(new Job())->doJob()方法;
新增加文字提醒 “2333, 平滑重啓成功”; 哈哈,其實說明已經生效啦!
- 守護進程運行:命令執行 php serve start -d
- 投遞一筆訂單,我們測試看下呢?-1 待支付狀態 0 已自動取消
提醒:測試文件在 Serve/data/sp_order.sql
三、實現上述過程,需要下面的這些環境安裝
1,安裝Redis 作爲隊列, MySQL 數據庫
2, 通過命令 pecl install swoole, pecl install seaslog 完成擴展安裝
php --ini 命令確定 php.ini 位置, 把 swoole.so 和 seaslog.so 添加上去即可
3,通過Mix Delayer 工具(實現延時)
下載地址:https://github.com/mix-basic/delayer/releases
使用說明: https://github.com/mix-basic/delayer-client-php
4,管理Serve 命令,分別有:php serve start | stop | reload | reload:all
5,Git 倉庫地址:https://github.com/twomiao/Serve.git (Redis 延時隊列)
https://github.com/twomiao/Jober (beanstalkd消息隊列,可查看另一篇文章)
最重要的一點:記得給個Star 支持喲~