tp5mysql实现消息队列_thinkphp5tp5queue消息队列使用方法

tp5mysql实现消息队列_thinkphp5tp5queue消息队列使⽤⽅法安装
composer require topthink/think-queue
配置
配置⽂件位于 config/queue.php
公共配置
[
标准化建设
'default'=>'sync' //驱动类型,可选择 sync(默认):同步执⾏,database:数据库驱动,redis:Redis驱动,topthink:Topthink驱动
//或其他⾃定义的完整的类名
]
驱动配置
各个驱动的具体可⽤配置项在thinkqueueconnector⽬录下各个驱动类⾥的options属性中,写在上⾯的queue配置⾥即可覆盖
创建任务
单模块项⽬推荐使⽤ appjob 作为任务类的命名空间 多模块项⽬可⽤使⽤ appmodulejob 作为任务类的命名空间 也可以放在任意可以⾃动加载到的地⽅
任务类不需继承任何类,如果这个类只有⼀个任务,那么就只需要提供⼀个fire⽅法就可以了,如果有多个⼩任务,就写多个⽅法,下⾯发布任务的时候会有区别
每个⽅法会传⼊两个参数 thinkqueueJob $job(当前的任务对象) 和 $data(发布任务时⾃定义的数据)
还有个可选的任务失败执⾏的⽅法 failed 传⼊的参数为$data(发布任务时⾃定义的数据)
下⾯写两个例⼦
namespace appjob;
社稷use thinkqueueJob;
class Job1{
public function fire(Job $job, $data){
//....这⾥执⾏具体的任务
if ($job->attempts() > 3) {
//通过这个⽅法可以检查这个任务已经重试了⼏次了
黑暗的西欧中世纪}
//如果任务执⾏成功后 记得删除任务,不然这个任务会重复执⾏,直到达到最⼤重试次数后失败后,执⾏failed⽅法
$job->delete();
// 也可以重新发布这个任务
$job->release($delay); //$delay为延迟时间
}
public function failed($data){
// ...任务达到最⼤重试次数后,失败了
}
}
namespace applibjob;
use thinkqueueJob;
class Job2{
public function task1(Job $job, $data){
}
丽彩士
public function task2(Job $job, $data){
}
public function failed($data){
}
马丁约根森}
发布任务
thinkQueue::push($job, $data = '', $queue = null) 和 thinkQueue::later($delay, $job, $data = '', $queue = null) 两个⽅法,前者是⽴即执⾏,后者是在$delay秒后执⾏
$job 是任务名
单模块的,且命名空间是appjob的,⽐如上⾯的例⼦⼀,写Job1类名即可
多模块的,且命名空间是appmodulejob的,写model/Job1即可
其他的需要些完整的类名,⽐如上⾯的例⼦⼆,需要写完整的类名applibjobJob2
如果⼀个任务类⾥有多个⼩任务的话,如上⾯的例⼦⼆,需要⽤@+⽅法名applibjobJob2@task1、applibjobJob2@task2
$data 是你要传到任务⾥的参数
$queue 队列名,指定这个任务是在哪个队列上执⾏,同下⾯监控队列的时候指定的队列名,可不填
监听任务并执⾏
php think queue:listen
php think queue:work
两种,具体的可选参数可以输⼊命令加 --help 查看
可配合supervisor使⽤,保证进程常驻
//执⾏⼀⾏
php think queue:work--queue-v
//循环执⾏
php think queue:work--daemon韩信巧点兵

本文发布于:2024-09-23 19:21:28,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/153259.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:任务   队列   命名   驱动
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议