think-queue for ThinkPHP6

安装

composer require shirakun/think-queue

配置

配置文件位于 config/queue.php

公共配置

[

'default'=>'sync' //驱动类型,可选择 sync(默认):同步执行,database:数据库驱动,redis:Redis驱动//或其他自定义的完整的类名

]

创建任务类

单模块项目推荐使用 app\job 作为任务类的命名空间

多模块项目可用使用 app\module\job 作为任务类的命名空间

也可以放在任意可以自动加载到的地方

任务类不需继承任何类,如果这个类只有一个任务,那么就只需要提供一个fire方法就可以了,如果有多个小任务,就写多个方法,下面发布任务的时候会有区别

每个方法会传入两个参数 shirakun\queue\Job $job(当前的任务对象) 和 $data(发布任务时自定义的数据)

还有个可选的任务失败执行的方法 failed 传入的参数为$data(发布任务时自定义的数据)

下面写两个例子

namespace app\job;

use shirakun\queue\Job;

class Job1{

public function fire(Job $job, $data){

//....这里执行具体的任务

if ($job->attempts() > 3) {

//通过这个方法可以检查这个任务已经重试了几次了

}

//如果任务执行成功后 记得删除任务,不然这个任务会重复执行,直到达到最大重试次数后失败后,执行failed方法

$job->delete();

// 也可以重新发布这个任务

$job->release($delay); //$delay为延迟时间

}

public function failed($data){

// ...任务达到最大重试次数后,失败了

}

}

namespace app\lib\job;

use shirakun\queue\Job;

class Job2{

public function task1(Job $job, $data){

}

public function task2(Job $job, $data){

}

public function failed($data){

}

}

发布任务

shirakun\facade\Queue::push($job, $data = '', $queue = null) 和 shirakun\facade\Queue::later($delay, $job, $data = '', $queue = null) 两个方法,前者是立即执行,后者是在$delay秒后执行

$job 是任务名

单模块的,且命名空间是app\job的,比如上面的例子一,写Job1类名即可

多模块的,且命名空间是app\module\job的,写model/Job1即可

其他的需要些完整的类名,比如上面的例子二,需要写完整的类名app\lib\job\Job2

如果一个任务类里有多个小任务的话,如上面的例子二,需要用@+方法名app\lib\job\Job2@task1、app\lib\job\Job2@task2

$data 是你要传到任务里的参数

$queue 队列名,指定这个任务是在哪个队列上执行,同下面监控队列的时候指定的队列名,可不填

监听任务并执行

php think queue:listen

php think queue:work

两种,具体的可选参数可以输入命令加 --help 查看

可配合supervisor使用,保证进程常驻

php 队列 api,GitHub - shirakun/think-queue: ThinkPHP 队列支持相关推荐

  1. php think queue work,GitHub - top-think/think-queue: ThinkPHP 队列支持

    think-queue for ThinkPHP6 安装 composer require topthink/think-queue 配置 配置文件位于 config/queue.php 公共配置 [ ...

  2. think\queue 消息队列

    简介 TP 中使用 think-queue 可以实现普通队列和延迟队列. think-queue 是thinkphp 官方提供的一个消息队列服务,它支持消息队列的一些基本特性: 消息的发布,获取,执行 ...

  3. ThinkPHP5.0+Queue消息队列

    Queue消息队列: Thinkphp官方团队开发的一个专门支持队列服务的扩展包,使用composer管理,使用起来非常方便 优点: 1. Queue内置了 Redis,Database,Topthi ...

  4. WCF4.0新特性体验(9):非破坏性队列消息接收(Non-destructive queue receive )

    这次来介绍一下WCF4.0新特性体验(9):非破坏性队列接收(Non-destructive queue receive ).这个特性不是那么直观.确切来说是WCF4.0对于以前处理MSMQ消息队列机 ...

  5. java数据结构与算法之(Queue)队列设计与实现

    [版权申明]转载请注明出处(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/53375004 出自[zejian的博客] ...

  6. C++实现circular queue循环队列(使用数组)(附完整源码)

    C++实现circular queue循环队列使用数组 C++实现circular queue循环队列(使用数组)算法完整源码(定义,实现,main函数测试) C++实现circular queue循 ...

  7. C++使用linked list(链表)实现circular queue(循环队列)(附完整源码)

    使用linked lis实现circular queue node结构体定义 使用linked list(链表)实现circular queue(循环队列)算法的完整源码(定义,实现,main函数测试 ...

  8. Queue(队列 C++模版实现)

    Queue(队列 C++模版实现) #ifndef C11LEARN_QUEUE_H #define C11LEARN_QUEUE_H template<typename T> class ...

  9. tp5 mysql实现消息队列_TP5系列 | Queue消息队列

    消费信息如下ThinkPHP5 Queue消息队列 优点 1.Queue内置了 Redis,Database,Topthink ,Sync这四种驱动,本文使用Redis驱动 2.Queue消息队列适用 ...

最新文章

  1. 技术人员应该如何培养
  2. es6新增的html标签,javascript – 如何导入已在html中的标签中定义的es6模块?
  3. notempty注解属于哪个依赖_Spring框架 之@Valid注解的使用(嵌套类型的效验)
  4. angularjs通信以及postmessage与iframe通信
  5. 2019年中国计算机学会(CCF)推荐国际学术会议和期刊目录-A类
  6. C语言自学之路五(选择语句详解)
  7. acwing-提高课
  8. 借用传感器用计算机测速度题,图甲为利用距离传感器发出和接受超声波信号检测汽车速度的示意图.距离传感器发出的超声波遇到物......
  9. Python 截屏 - lone112 - 博客园
  10. 做程序员10年有感,程序员必须要懂的---转自java诺曼底_kleen
  11. c语言编程照抄能学好吗,C语言I作业12—学期总结
  12. 百度网盘无限扩容技术,外面399,无论自己用还是用做引流都可以
  13. 【Matlab学习手记】拟牛顿型信頼域方法求解函数极值
  14. 软件开发团队成员分工_分析软件开发人员的能力–选择合适的团队成员
  15. 四、软件概要设计说明书-模板
  16. 清洁机器人APP开发制作步骤
  17. 2022-ISCC信息安全与对抗竞赛wp-misc(详解,有脚本( •̀ ω •́ )y)
  18. 符号三角形问题—回溯算法—java实现
  19. 远程访问如此简单,通过 ZeroTier 和 Tailscale 轻松组建虚拟局域网,实现内网穿透。
  20. 一阶差分序列garch建模_时间序列模型stata 基本命令汇总

热门文章

  1. eclipse maven plugin 插件安装和配置
  2. linux系统下Opencv4.1.1编译安装,以及增加子函数和python中调用
  3. 9.26-CSS 背景 字体 文本 边框 以及其他
  4. 《How to debug PS4 game》
  5. Cocos2d Box2D之简介
  6. Android系统各版本号及代号
  7. JAMA:Java矩阵包
  8. 535 5.7.8 Error: authentication failed: generic failure安装EMOS时SMTP测试报错
  9. Python学习笔记九:文件I/O
  10. JXL读取,写入Excel