我的编程空间,编程开发者的网络收藏夹
学习永远不晚

thinkphp6 消息队列think-queue(完整版)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

thinkphp6 消息队列think-queue(完整版)

1.安装队列依赖

如果是在Linux上,进入thinkphp项目的think文件所在目录,执行安装命令

composer require topthink/think-queue

修改queue的配置文件,文件位置config/queue.php(安装成功后自动生成)

 'redis',    'connections' => [        'sync'     => [            'type' => 'sync',        ],        'database' => [            'type'  => 'database',            'queue' => 'default',            'table' => 'jobs',        ],        'redis'    => [            'type'       => 'redis',            'queue'      => 'default',            'host'       => '127.0.0.1',            'port'       => 6379,            'password'   => '',            'select'     => 0,            'timeout'    => 0,            'persistent' => false,        ],    ],    'failed'      => [        'type'  => 'none',        'table' => 'failed_jobs',    ],];

3.在项目下新建一个Job目录存放处理消息

4.控制器编写逻辑代码 app/controller/index.php

 

use think\facade\Queue;    public function job(Request $request)    {        $params = $request->get();        $jobHandlerClassName = 'app\job\Task';         $jobQueueName = 'task';        $orderData = ['order_sn'=>$params['id']];        //Queue::later();//立即执行        $isPushed = Queue::later(10, $jobHandlerClassName, $orderData, $jobQueueName); //这儿的10是指10秒后执行队列任务                if($isPushed !== false){            echo '队列添加成功';        }else{            echo '插入失败了';        }    }

5.编写对应的消费者类 app\job\SendCertJob.php

doJob($data);        if($rt){            $job->delete();            return true;        }        // 重试三次失败 todo...        if($job->attempts() == 3){            $job->delete();            return false;        }        //执行失败10S后重试        $job->release(10);    }    public function doJob($data)    {        echo date('Y-m-d H:i:s')."\n";        return false;    }}

php think queue:listen
–queue helloJobQueue \ //监听的队列的名称
–delay 0 \ //如果本次任务执行抛出异常且任务未被删除时,设置其下次执行前延迟多少秒,默认为0
–memory 128 \ //该进程允许使用的内存上限,以 M 为单位
–sleep 3 \ //如果队列中无任务,则多长时间后重新检查
–tries 0 \ //如果任务已经超过重发次数上限,则进入失败处理逻辑,默认为0
–timeout 60 // work 进程允许执行的最长时间,以秒为单位

 执行命令开启队列

php think queue:work --queue sendCertQueue --daemon

开启的过程中遇到 不支持 --daemon 选项的可以进行后面的操作

修改think-queue下的Work.php文件51行,新增一下代码

->addOption('daemon', 'd', Option::VALUE_NONE, 'Run the queue server in daemon mode.')

 

来源地址:https://blog.csdn.net/a729885163/article/details/130742850

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

thinkphp6 消息队列think-queue(完整版)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

ThinkPHP怎么使用think-queue实现redis消息队列

本篇内容主要讲解“ThinkPHP怎么使用think-queue实现redis消息队列”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ThinkPHP怎么使用think-queue实现redis消
2023-07-02

ThinkPHP基于think-queue的队列插件实现消息推送

think-queue是ThinkPHP官方提供的一个消息队列服务,是专门支持队列服务的扩展包。think-queue消息队列适用于大并发或返回结果时间比较长且需要批量操作的第三方接口,可用于短信发送、邮件发送、APP推送。
2022-12-14

python使用redis实现消息队列(异步)的实现完整例程

目录安装相关库消息队列实现及使用创建配置文件代码实现最近在用fastapi框架开发web后端,由于近几年python异步编程大火,fastapi凭借高性能也火了起来。本篇介绍了在异步环境下实现Redis消息队列的方法,代码可以直接拷贝到fa
2023-01-18

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录