Thinkphp自带的队列think-queue使用分析

think-queue是ThinkPHP官方提供的一个消息队列服务,是专门支持队列服务的扩展包。think-queue消息队列适用于大并发或返回结果时间比较长且需要批量操作的第三方接口,可用于短信发送、邮件发送、APP推送。think-queue消息队列可进行发布、获取、执行、删除、重发、失败处理、延迟执行、超时控制等操作。

think-queue支持消息队列的基本特性

消息的发布、获取、执行、删除、重发、失败处理、延迟执行、超时控制等
队列的多队列、内存限制、启动、停止、守护等
消息队列可降级位同步执行
1、安装 thinkphp-queue
推荐使用Composer进行安装,切换到项目的根目录,执行: composer require topthink/think-queue 注意tp5版本需要带版本号
2、配置消息队列的存储环境
配置文件正常位于 application\extra\queue.php,配置内容如下
return [
    'connector'  => 'Redis',         // Redis 驱动
    'expire'     => 60,              // 任务的过期时间,默认为60秒; 若要禁用,则设置为 null
    'default'    => 'default',       // 默认的队列名称
    'host'       => Env::get('redis.host', '127.0.0.1'),     // redis 主机ip
    'port'       => Env::get('redis.port', 6379),            // redis 端口
    'password'   => Env::get('redis.password'),              // redis 密码
    'select'     => 3,               // 使用哪一个 db,默认为 db0
    'timeout'    => 0,               // redis连接的超时时间
    'persistent' => false,           // 是否是长连接
];

3、任务的创建
我们在index模块下,Index.php文件,建立一个名为 queue 的方法(一定要这样么?当然不是,本教程,只是例子,你可以新建模块,方法名也可以是其他),如图:
\think\Queue::push(队列类,参数,队列名);
4、任务消息的消费以及删除处理
我们在index模块下创建一个 job 文件,该文件用来处理消费模式,如图:
在 Demo 这个类下,创建一个 fire 方法,该方法是消息队列默认调用的方法。如图:
以上就是完成任务的创建—》推送—》消费了。
5、监听任务并执行
php think queue:listen --queue 任务名
php think queue:work --queue 任务名
两种,具体的可选参数可以输入命令加 –help 查看
Linux启动守护进程,以tp5为例子
nohup php think queue:work --daemon --queue 任务名称 &
查看任务进程编号 jobs -l

阅读剩余
THE END