thinkphp6 消息队列(queue)使用方法_thinkphp6 queue-程序员宅基地

技术标签: php  

安装

composer require topthink/think-queue

配置

配置文件位于 config/queue.php

公共配置

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

创建任务类

单模块项目推荐使用 app\job 作为任务类的命名空间 多模块项目可用使用 app\module\job 作为任务类的命名空间 也可以放在任意可以自动加载到的地方

任务类不需继承任何类,如果这个类只有一个任务,那么就只需要提供一个fire方法就可以了,如果有多个小任务,就写多个方法,下面发布任务的时候会有区别
每个方法会传入两个参数 think\queue\Job $job(当前的任务对象) 和 $data(发布任务时自定义的数据)

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

下面写两个例子

namespace app\job;

use think\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 think\queue\Job;

class Job2{
    
    public function task1(Job $job, $data){
    
          
    }
    
    public function task2(Job $job, $data){
    
          
    }
    
    public function failed($data){
    
          
    }

}

发布任务

think\facade\Queue::push($job, $data = '', $queue = null) 和 think\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@task1app\lib\job\Job2@task2

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

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

监听任务并执行

php think queue:listen

php think queue:work

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

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

thinkphp6 消息队列(queue)使用方法 - Ouchihui - 博客园 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_40945903/article/details/121748148

智能推荐

Can't open a connection to site 'SYB_BACKUP'. See the error log file in the ASE boot directory. Msg-程序员宅基地

文章浏览阅读2.5k次。Can't open a connection to site 'SYB_BACKUP'. See the error log file in the ASE boot directory. Msg 7205_can't open a connection to site 'syb_backup'. see the error log file in the

yum 安装tomcat_yum tomcat位置-程序员宅基地

文章浏览阅读2.6k次。下面说下yum安装tomcat1. 安装在linux下部署java开发的web应用,一般采用Tomact+jre环境(可不需要apache),在RHEL和CentOS下,可以采用yum在线自动安装方式安装,具体操作如下:可以先查看tomcat在服务器上面的版本:yum search tomcat 可以看到需要安装的tomcat版本号为tomcat6安装命令:yum install tomcat6( 执行以上命令系统会自动安装tomcat和所关联的jdk)2. 安装位置具体说明结束安装系统_yum tomcat位置

流量项目总结_流量类的项目是什么-程序员宅基地

文章浏览阅读708次。硬件配置规模:Sca是一个单独的hadoop集群(24个节点,每个节点的配置:412core CPU,101T硬盘,64G/128G内存)Tas有一个单独的hadoop集群(部署了hive)(35节点)预处理ftp采集集群(6节点,上面部署了采集程序及zookeeper服务)Storm集群(单独)(手机位置实时分析&详单输出解析入hbase库)(10节点)kafka&zoo..._流量类的项目是什么

【CeleX5事件相机使用系列】传感器时间戳同步问题_时间戳是递增的吗-程序员宅基地

文章浏览阅读1.6k次,点赞4次,收藏6次。由于我需要同时获得event和frame,所以需要在Loop模式下获得两种数据的时间戳。这两日折腾了好久,发现CeleX的传感器缺少相关API,且存在一定的问题。在这里做记录总结,以及分享。转载请注明出处 Loop模式的时序根据手册,Loop模式下,当前处在Mode1-3的任意一个模式,且这个模式完成后切换到下一个模式。所谓“完成”,对于fullframe来说,就是采集够了设定的图片数量,而event模式,则是持续了足够的时间。根据手册,可以采用setPictureNumber()设定图片的数.._时间戳是递增的吗

linux一直卡在nfsd_Linux nfsd的过程和含义是什么?-程序员宅基地

文章浏览阅读3.2k次。linux一直卡在nfsdNFS is Unix and Linux type network based file system. This file system is served over network. In order to serve file system with files and directory nfsddaemon is used. It is actually a..._nfsd

dw2019连接mysql数据库_如何在 Dreamweaver 中连接到 MySQL 数据库-程序员宅基地

文章浏览阅读2.4k次。本文档适用于 DreamweaverCreative Suite 用户(使用运行 PHP 5x 的服务器)。如果您使用的是 Dreamweaver,请参阅以下文档了解有关数据库连接的信息:概述此文档介绍在 Dreamweaver 中使用 PHP 服务器模型时,创建成功的 MySQL 数据库连接过程中涉及的一些重要因素。它还介绍了一些基本的 MySQL 用户帐户设置。本文假定您在本地或远程计算机上..._dw链接mysql实现注册登录

随便推点

QChart绘制动态曲线图_qt中绘制动态曲线-程序员宅基地

文章浏览阅读601次,点赞12次,收藏8次。使用QChart模块前要声明宏 QT_CHARTS_USE_NAMESPACE 不然会报错。在.ui文件中选择容器,这里我们选择Widget,然后点击提升为,添加QChartView。所以我们学习用QChart和QTimer来完成曲线图的绘制。上位机页面需要根据用户设置的转速和时间,绘制曲线图。随后在.h文件中引入头文件并声明我们需要的用到的变量。首先我们需要在.pro文件中引入Qchart模块。根据自己的需求设置定时器,绘制曲线。(Qt6似乎没有这个问题)在.cpp中创建图表。_qt中绘制动态曲线

探索PinYin4j.jar将汉字转换为拼音的基本用法_pinyin4j 阿拉伯数字转拼音-程序员宅基地

文章浏览阅读391次。将汉字转换为拼音在Android开发中是个很常见的问题。例如:在android手机应用开发中,要查询联系人的姓名,通常都是用拼音进行查询的。Pinyin4j是一个功能强悍的汉语拼音工具包,是sourceforge.net上的一个开源项目。主要的功能有: - 支持同一汉字有多个发音 - 支持拼音的格式化输出,比如第几声之类的 - 支持简体中文、繁体中文转换为拼音 首先_pinyin4j 阿拉伯数字转拼音

iOS检查更新_ios 无法检查更新-程序员宅基地

文章浏览阅读254次。#pragma -mark 检查更新-(void)CheckVersionUpdate{ NSDictionary *infoDic = [[NSBundlemainBundle] infoDictionary]; NSString *currentVersion = [infoDic objectForKey:_ios 无法检查更新

编程笔记一:Windows程序内部运行原理_笔记编程是怎么让别的东西远行原理-程序员宅基地

文章浏览阅读431次。《疯狂的程序员》里面boss绝的数据库老师说,“‘数据库原理与应用’,实际上就是数据库应用,像原理这种高深的东西,不能说,说了你们也无法理解。”想来教训得是,什么windows程序内部运行原理,其实就是教我们怎样编写一个窗口程序,一个简单的窗口程序。好,开始吧。一、程序编写函数预处理就不用说了:#include /*头文件,不解释*/#include Windows程序的入口函数,是WinMain,让我们查询MSDN。得到如下:int WINAPI WinMain( HINSTANC_笔记编程是怎么让别的东西远行原理

银联渠道实名认证鉴权接口_五要素鉴权-程序员宅基地

文章浏览阅读9.8k次,点赞2次,收藏8次。为消费信贷及小微贷款提供风控服务,为用户提供从身份验证、反欺诈到信用评分的(贷前)全流程风控服务。典型用例:用户输入被查询人姓名、身份证、手机号、银行卡号四要素,产品返回风险评估报告和决策建议。客户群体: 信贷机构、助贷机构、数据公司等企业用户目标业务类型:现金贷、消费分期、信用卡余额代偿等场景: 线上、线下1. 两要素认证,卡号 +姓名_五要素鉴权

【Java爬虫】使用Jsoup爬取网页<table>表格的分页信息_上海浦东机场爬虫-程序员宅基地

文章浏览阅读2.8k次,点赞2次,收藏12次。爬取网站:https://flights.ctrip.com/actualtime/arrive-sha.p1/爬取上海浦东机场的航班信息技术:使用Jsoup技术jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。参考Jsoup官方文档 Jsoup_Do..._上海浦东机场爬虫

推荐文章

热门文章

相关标签