thinkphp6 queue队列的maxTries自定义

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

我目前使用的thinkphp版本是6.1

第一部定义一个新的类

复制代码
CustomDataBase(我用的mysql数据库存放的队列)

重写__make 和createPlainPayload方法

复制代码
<?php
namespace app;

use think\Db;
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);
    }
    protected function createPlainPayload($job, $data)
    {
        return [
            'job'      => $job,
            'maxTries' => 22,
            'timeout'  => null,
            'data'     => $data,
        ];
    }
}

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

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

复制代码
Queue::push(EmailJob::class, $email->id);
相关推荐
云水一下4 小时前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
麦聪聊数据4 小时前
数据服务化时代:企业数据能力输出的核心路径
数据库
shushangyun_4 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
xingpanvip4 小时前
星盘接口开发文档:本命盘接口指南
android·开发语言·css·php·lua
DARLING Zero two♡4 小时前
【MySQL数据库】数据类型与表约束
数据库·mysql
曹牧5 小时前
Oracle EXPLAIN PLAN
数据库·oracle
BD_Marathon5 小时前
SQL学习指南——视图
数据库·sql
活宝小娜5 小时前
mysql详细安装教程
数据库·mysql·adb
贤时间5 小时前
codex 助力oracle ebs 开发
数据库·oracle
秉承初心6 小时前
PostgreSQL 数据性能瓶颈突破实战
数据库·postgresql·oracle