thinkphp6 queue队列的maxTries自定义

news/2024/9/20 1:22:04/ 标签: 数据库, sql, php, thinkphp

前景需求:在我们用队列的时候发现maxtries的个数时255次,这个太影响其他队列任务

我目前使用的thinkphp版本是6.1

第一部定义一个新的类

CustomDataBase(我用的mysql数据库存放的队列)

重写__make 和createPlainPayload方法或者getNextAvailableJob,两个方法有区别

createPlainPayload:当attempts超过maxTries就会走job的failed,且会将当前数据库中的job数据删掉

getNextAvailableJob:attempts超过10次的就不会再处理,也不会删掉此数据
<?php
namespace app;use Carbon\Carbon;
use think\Db;
use think\db\Query;
use think\queue\connector\Database;class CustomDataBase extends Database
{public static function __make(Db $db, $config){$connection = $db->connect($config['connection'] ?? null);return new self($connection, $config['table'], $config['queue'], $config['retry_after'] ?? 60);}// 当attempts超过maxTries就会走job的failed,且会将当前数据库中的job数据删掉protected function createPlainPayload($job, $data){return ['job'      => $job,'maxTries' => 22,'timeout'  => null,'data'     => $data,];}// attempts超过10次的就不会再处理,也不会删掉此数据protected function getNextAvailableJob($queue){$job = $this->db->name($this->table)->lock(true)->where('queue', $this->getQueue($queue))->where('attempts', '<=',10)->where(function (Query $query) {$query->where(function (Query $query) {$query->whereNull('reserve_time')->where('available_time', '<=', $this->currentTime());});//超时任务重试$expiration = Carbon::now()->subSeconds($this->retryAfter)->getTimestamp();$query->whereOr(function (Query $query) use ($expiration) {$query->where('reserve_time', '<=', $expiration);});})->order('id', 'asc')->find();return $job ? (object) $job : null;}
}

第二步修改queue.php文件的配置

为什么要重写类,自己要点Queue::push(),查看源码,因为我的项目通篇用的都是用的类名,最简单的是重写,当然你也可以自己在push的时候写对象,对象里面定义属性$tries=10;

Queue::push(EmailJob::class, $email->id);


http://www.ppmy.cn/news/1467657.html

相关文章

如何通俗易懂地理解大模型参数?

大型语言模型 (LLM) 的大小是通过参数数量来衡量的。举几个典型例子&#xff0c;GPT-3 有 1750 亿个参数&#xff0c;1750亿也可称为175B&#xff08;1B 10亿&#xff09;&#xff0c;Meta最新开源的Llama3 参数数量在 80 亿到 700 亿之间&#xff0c;智谱公司最新开源的GLM4-…

GBDT的优势:为什么选择梯度提升决策树

GBDT的优势&#xff1a;为什么选择梯度提升决策树 在机器学习的众多算法中&#xff0c;GBDT&#xff08;Gradient Boosting Decision Tree&#xff0c;梯度提升决策树&#xff09;因其在各类回归和分类任务中的卓越表现而备受关注。GBDT不仅在各种竞赛中屡获佳绩&#xff0c;还…

Vue——监听器简单使用与注意事项

文章目录 前言编写简单demo注意事项 前言 监听器&#xff0c;在官网中称为侦听器&#xff0c;个人还是喜欢称之为监听器。官方文档如下&#xff1a; vue 官网 侦听器 编写简单demo 侦听器在项目中通常用于监听某个属性变量值的变化&#xff0c;并根据该变化做出一些处理操作。…

C/C++|关于C++的异常处理机制

来自C入门选手的理解&#xff0c;希望有大佬看到可以指导补充 首先我们需要先讨论一下assert宏&#xff0c;它仅用来捕捉不应该发生的逻辑错误&#xff0c;而且他也不能对错误进行处理&#xff0c;而是直接终止程序执行。 随后我们来介绍C的异常处理机制。它允许程序中独立开发…

【重学C语言】十八、SDL2 图形编程介绍和环境配置

【重学C语言】十八、SDL2 图形编程介绍和环境配置 **SDL2介绍**SDL 2用途SDL 在哪些平台上运行&#xff1f;下载和安装 SDL2安装 SDL2 clion 配置 SDL2 SDL2介绍 SDL2&#xff08;Simple DirectMedia Layer 2&#xff09;是一个开源的跨平台多媒体开发库&#xff0c;主要用于游…

Python网络安全项目开发实战:如何看清文件上传木马

注意:本文的下载教程,与以下文章的思路有相同点,也有不同点,最终目标只是让读者从多维度去熟练掌握本知识点。 下载教程:Python网络安全项目开发实战_看清文件上传木马_编程案例解析实例详解课程教程.pdf 在网络安全领域,Python以其强大的功能和灵活性成为了一种非常流行…

微信小程序区分运行环境

wx.getAccountInfoSync() 是微信小程序的一个 API&#xff0c;它可以同步获取当前账号信息。返回对象中包含小程序 AppID、插件的 AppID、小程序/插件版本等信息。 返回的对象结构如下&#xff1a; 小程序运行环境&#xff0c;可选值有&#xff1a;develop&#xff08;开发版&…

Waymo视角革新!MoST:编码视觉世界,刷新轨迹预测SOTA!

论文标题&#xff1a; MoST: Multi-modality Scene Tokenization for Motion Prediction 论文作者&#xff1a; Norman Mu, Jingwei Ji, Zhenpei Yang, Nate Harada, Haotian Tang, Kan Chen, Charles R. Qi, Runzhou Ge, Kratarth Goel, Zoey Yang, Scott Ettinger, Rami A…

直播分享|深入解析ts-morph:通过注释生成类型文档

♪ ♫ 你看小狗在叫 树叶会笑 风声在呢喃♫ ♪ 乘风追梦&#xff0c;童心未泯 OpenTiny 预祝所有大朋友、小朋友儿童节快乐~ 与此同时&#xff0c;OpenTiny 贡献者直播也即将开启啦~ 直播主题&#xff1a;【深入解析ts-morph&#xff1a;通过注释生成类型文档】 6月1日&am…

基于FPGA的任意点滑动平均(滑动窗长度和数据位宽参数化,例化时参数可设置)

目录 1.前言2.原理3.举例说明4.Matlab实现5.FPGA实现滑动平均 微信公众号获取更多FPGA相关源码&#xff1a; 1.前言 对于一维信号&#xff0c;我们可以使用类似移动平均滤波&#xff08;Moving Average Filtering&#xff09;实现denoising。Moving Average Filtering 是一种…

【Linux】多线程——线程概念|进程VS线程|线程控制

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;理解【Linux】多线程——线程概念|进程VS线程|线程控制 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早安! &…

DNS域名

DNS域名 DNS是域名系统的简称 域名和ip地址之间的映射关系 互联网中&#xff0c;ip地址是通信的唯一标识 访问网站&#xff0c;域名&#xff0c;ip地址不好记&#xff0c;域名朗朗上口&#xff0c;好记。 域名解析的目的就是为了实现&#xff0c;访问域名就等于访问ip地址…

SpringBoot前端URL访问本地磁盘文件

SpringBoot前端通过 URL访问本地磁盘文件&#xff0c;其实就是 SpringBoot访问web中的静态资源的处理方式。 SpringBoot 访问web中的静态资源&#xff1a;https://blog.csdn.net/qq_42402854/article/details/90295079 首先&#xff0c;我们知道浏览器访问本地磁盘文件的方式为…

gitblit 环境搭建,服务器迁移记录

下载 Gitblit&#xff1a; http://www.gitblit.com/ JDK&#xff1a;gitblit网站显示需要jdk1.7&#xff0c;这里用的1.8。 Git&#xff1a;到官网下载最新版本安装 1). 分别安装JDK&#xff0c;Git&#xff0c;配置环境变量&#xff0c;下载并解压Gitblit 2). 创建代码仓库 …

Meta Llama 3 里面装饰器

Meta Llama 3 里面的装饰器 flyfish 目录 Meta Llama 3 里面的装饰器介绍staticmethod使用 staticmethod 的示例何时使用静态方法另一个示例&#xff1a;日期处理 其他的内置装饰器property示例 contextmanager示例 classmethod示例 classmethod 与 staticmethod 的比较stati…

RAG检索增强生成(1)-大语言模型的外挂数据库

Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks Lewis P, Perez E, Piktus A, et al. Retrieval-augmented generation for knowledge-intensive nlp tasks[J]. Advances in Neural Information Processing Systems, 2020, 33: 9459-9474. RAG结合了信息检…

Signac|成年小鼠大脑 单细胞ATAC分析(1)

引言 在本教程中&#xff0c;我们将探讨由10x Genomics公司提供的成年小鼠大脑细胞的单细胞ATAC-seq数据集。本教程中使用的所有相关文件均可在10x Genomics官方网站上获取。 本教程复现了之前在人类外周血单核细胞&#xff08;PBMC&#xff09;的Signac入门教程中执行的命令。…

【乐吾乐2D可视化组态编辑器】在线使用,快速入门

一、在线使用 乐吾乐2D可视化组态编辑器地址&#xff1a;https://2d.le5le.com/ 二、步骤 本教程将带领你快速体验2D可视化编辑器的全流程开发。 1.创建图纸 进入2d编辑器主界面后&#xff0c;主界面最中心为图纸面板&#xff0c;默认为空图纸&#xff0c;在界面左侧为组…

深入理解mysql中的各种超时属性

1. 前言 connectTimeout: 连接超时 loginTimeout: 登录超时 socketTimeout: Socket网络超时&#xff0c;即读超时 queryTimeout: sql执行超时 transactionTimeout:spring事务超时 innodb_lock_wait_timeout:innodb锁等待超时 wait_timeout:非交互式连接关闭前的等待时间 inter…

Git命令行

文章目录 初始化配置仓库 其实Idea里自带的命令能满足工作多数场景&#xff0c;但也会使思维受限&#xff0c;总结下Git里常用的命令行对Idea进行补充 初始化配置 # 查看git配置&#xff08;重点关注账号和邮箱&#xff09; git config --list# 设置全局姓名和邮箱 git config…