案例使用背景說下:場景很多說下本文中我們要做什麼吧!很多小夥伴不熟悉RabbitMQ 企業級消息隊列;我們通過最熟悉的Redis 作爲延時隊列吧!案例:“實現定時郵件發送,現在我們開始吧!”。
一、環境準備:
1. 安裝ThinkPHP 5.0 過於簡單略過
2. 安裝supervisor -- yum install python-setuptools && easy_install supervisor
3. 環境安裝完成啦~
二、Supervisor 管理命令說明:
1. supervisorctl update -- 更新的配置到supervisord
2. supervisorctl reload -- 重新啓動配置中的所有程序
3. supervisorctl start program_name -- 啓動某個進程(program_name=你配置中寫的程序名稱)
4. supervisorctl -- 查看正在守候的進程
5. pervisorctl stop program_name -- 停止某一進程 (program_name=你配置中寫的程序名稱)
6. supervisorctl restart program_name -- 重啓某一進程 (program_name=你配置中寫的程序名稱)
7. 停止全部進程 -- supervisorctl stop all
三、think-queue 依賴安裝:
1. composer require topthink/think-queue -- 安裝延時客戶端庫
2. composer require swiftmailer/swiftmailer -- 安裝郵件客戶端庫
3. think-queue 詳細用法:https://packagist.org/packages/topthink/think-queue
4. 投遞消息到隊列,兩個命令:
1. think\Queue::push($job, $data = '', $queue = null) -- 立即投遞
2. think\Queue::later($delay, $job, $data = '', $queue = null) -- 延時投遞
四、案例實戰(異步郵件發送):
-
創建:命名空間 app\index\job 類 Mail – 完整類的名稱:app\index\job\Mail
-
Mail 代碼:
-
extra/queue.php 驅動設置爲“Redis”:
-
在User控制器中,投遞消息:
-
演示案例過程:
五、案例實戰(異步郵件發送),配置Supervisor:
- 通過命令 “ vim /etc/supervisord.conf “編輯配置文件:
- 通過上文講述,得知命令 “ supervisorctl update ” 更新配置文件:
- 啓動 Supervisor ,通過命令“ supervisorctl start all ”:
- Supervisor 啓動成功:
- 投遞消息,異步郵件發送成功:
總結:
- 異步郵件/定時郵件/取消訂單都可以這樣做,很好的一種方案。
- 具體代碼我已提交到我的github上,地址:https://github.com/twomiao/tp5.git
- 通過命令 “ vim /etc/supervisord.conf “編輯配置文件: