案例使用背景说下:场景很多说下本文中我们要做什么吧!很多小伙伴不熟悉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 “编辑配置文件: