返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >think-queue安装与使用
  • 796
分享到

think-queue安装与使用

php 2023-09-04 08:09:21 796人浏览 泡泡鱼
摘要

官方介绍(可忽略) think-queue是ThinkPHP官方提供的一个消息队列服务,是专门支持队列服务的扩展包。think-queue消息队列适用于大并发或返回结果时间比较长且需要批量操作的第

官方介绍(可忽略)

think-queue是ThinkPHP官方提供的一个消息队列服务,是专门支持队列服务的扩展包。think-queue消息队列适用于大并发或返回结果时间比较长且需要批量操作的第三方接口,可用于短信发送、邮件发送、APP推送。think-queue消息队列可进行发布、获取、执行、删除、重发、失败处理、延迟执行、超时控制等操作。

think-queue支持消息队列的基本特性

  • 消息的发布、获取、执行、删除、重发、失败处理、延迟执行、超时控制等
  • 队列的多队列、内存限制、启动、停止、守护等
  • 消息队列可降级位同步执行

官方文档


版本

think-queue各主版本对应适用的Thinkphp版本

think-queue版本号适用的ThinkPHP版本
1.xThinkPHP5.0
2.xThinkPHP5.1
3.xThinkPHP6.0

安装

  1. 下载地址(GitHub | Composer

  2. 使用Composer快速安装Think-queue

composer require topthink/think-queue

搭建消息队列的存储环境


配置

  1. think-queue安装完成后,找到项目配置目录下生成的配置文件config/queue.php

配置文件

  1. 打开并修改配置文件

默认的驱动类型sync更改为redis,使用前者的发布任务的只会同步执行,推荐使用redis。使用redis驱动类型,需要事先安装好Redis服务,详见 《Redis安装与使用》

配置内容

公共配置

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

驱动类型

驱动类型对应的类型值
sync同步执行, 默认值
database数据库驱动
redisRedis驱动 【推荐】
其他自定义的完整的类名···

创建任务类

单模块项目推荐使用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,保证进程常驻

php think queue:listen --queue testQueue

设置常驻进程


参考资料:

TP6.0 消息队列 topthink/think-queue

thinkphp-queue 笔记

来源地址:https://blog.csdn.net/Hiking_Tsang/article/details/127617177

--结束END--

本文标题: think-queue安装与使用

本文链接: https://lsjlt.com/news/393177.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • think-queue安装与使用
    官方介绍(可忽略) think-queue是ThinkPHP官方提供的一个消息队列服务,是专门支持队列服务的扩展包。think-queue消息队列适用于大并发或返回结果时间比较长且需要批量操作的第...
    99+
    2023-09-04
    php
  • ThinkPHP怎么使用think-queue实现redis消息队列
    本篇内容主要讲解“ThinkPHP怎么使用think-queue实现redis消息队列”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ThinkPHP怎么使用think-queue实现redis消...
    99+
    2023-07-02
  • ThinkPHP 使用 think-queue 实现 redis 消息队列(超详细)
    简单介绍: 消息队列中间件是大型系统中的重要组件,已经逐渐成为企业系统内部通信的核心手段。它具有松耦合、异步消息、流量削峰、可靠投递、广播、流量控制、最终一致性等一系列功能,已经成为异步RPC的主要手...
    99+
    2023-09-04
    redis php
  • thinkphp6 使用 topthink/think-queue 配置守护进程消息队列
    当前演示使用宝塔面板 安装composer require topthink/think-queue 配置config/queue.php return [ //驱动类型,可选择 sync(默认):同...
    99+
    2023-09-21
    数据库 php redis
  • thinkphp6、thinkphp5.0 使用think-queue实现普通队列和延迟队列
    何为异步消息队列: 所谓消息队列,就是一个以队列数据结构为基础的一个实体,这个实体是真实存在的,比如程序中的数组,数据库中的表,或者redis等等,都可以。 异步队列的作用: 个人认为消息队列的主...
    99+
    2023-08-31
    redis php
  • thinkphp6使用think-queue怎么实现普通队列和延迟队列
    本文小编为大家详细介绍“thinkphp6使用think-queue怎么实现普通队列和延迟队列”,内容详细,步骤清晰,细节处理妥当,希望这篇“thinkphp6使用think-queue怎么实现普通队列和延迟队列”文章能帮助大家解决疑惑,下...
    99+
    2023-06-30
  • sqoop 安装与使用
    Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可...
    99+
    2020-02-07
    sqoop 安装与使用
  • WinHex安装与使用
    目录 下载WinHex 安装WinHex 查看现成的磁盘文件 手动创建磁盘文件 创建磁盘文件 创建分区 安装引导程序 查看磁盘 下载WinHex 下载链接: WinHex: Hex Editor & Disk Editor, Comp...
    99+
    2023-09-06
    linux 运维 服务器
  • Composer 安装与使用
    一、composer 安装 进入系统的  cd /usr/local/bin   目录 执行安装命令: curl -sS https://getcomposer.org/installer | php 重命名 composer.phar...
    99+
    2023-09-04
    composer php 开发语言
  • s3cmd安装与使用
    一、安装 1.下载安装包。 这里我们使用s3cmd-1.0.0.tar.gz安装包 2.解压安装包 tar xzvf s3cmd-1.0.0.tar.gz 3.移动路径 mv s3cmd-1.0.0 /usr/local/s3cmd 4.创...
    99+
    2023-01-31
    s3cmd
  • Vue安装与使用
    目录1、Vue安装方式1:CDN引入方式2:直接下载引入方式3:npm安装2、基本使用前言: Vue(读音/vjuː/,类似于view) 是一套用于构建前后端分离的框架。刚...
    99+
    2024-04-02
  • Percona xtrabackup 安装与使用
    Backup一直是数据库最重要的环节,mysql也比例外。而mysql最好的备份工具就是Percona xtrabackup和Mysql Enterprise backup(官方收费版)。Xtrabacku...
    99+
    2024-04-02
  • Oracle-11g安装与使用
    一、Oracle11g安装与使用 1.大型关系型数据库(E-R图)2.甲骨文(Java)3.UNIX、Linux、Windows支持4.Oracle发行版5.数据库(软件+数据库)MySQL6.默认只有一个...
    99+
    2024-04-02
  • npm的安装与使用
    目录一、由来1、在 GitHub 还没有兴起的年代,前端是通过网址来共享代码2、GItHub 兴起之后,社区中也有人使用 GitHub 的下载功能:3、麻烦4、具体步骤5、发展二、n...
    99+
    2024-04-02
  • vnc view安装与使用
    vnc view安装与使用 1. 安装 vnc远程连接,需要在服务器端安装vnc server,在客户端安装vnc viewer 。 这里我主要是研究如何在自己的电脑安装vnc viewer,来远程连...
    99+
    2023-09-10
    服务器 linux 运维
  • sshpass的安装与使用
    1. sshpass的定义与安装 (1)定义 sshpass 的定义:ssh 登陆不能在命令行中指定密码,sshpass 的出现则解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量...
    99+
    2023-09-01
    linux sshpass scp ssh 脚本
  • tcpreplay的安装与使用
    一、背景介绍 tcpreplay是一种pcap包的重放工具, 它可以将用ethreal, wireshark工具抓下来的包原样或经过任意修改后重放回去. 它允许你对报文做任意的修改(主要是指对2层, ...
    99+
    2023-10-24
    网络 linux 服务器 tcp
  • MinIO的安装与使用
    MinIO的安装与使用 一、MinIO是什么?二、MinIO安装(centos7)2.1 下载MinIO2.2 启动MinIO2.3 修改配置2.4 编写启动脚本,以及加入到systemctl中 三、Springboot集成Mi...
    99+
    2023-08-18
    linux 开发语言 java 服务器
  • 简述thinkphp自带队列think-queue的使用以及通过supervisor实现常驻进程
    think-queue是thinkphp官方提供的一个消息队列服务,适用于大并发、返回结果时间较长、需要批量操作等专门支持队列服务的扩展包。例如短信发送、模板消息邮件等推送。可以进行发布、获取、执行、...
    99+
    2023-09-07
    linux php redis
  • percona-toolkit的安装与使用
    一、percona-toolkit的安装请参考:https://blog.csdn.net/yuanyk1222/article/details/100066788 二、下面来说说此工具的一些用法: pt-online-schema-c...
    99+
    2016-05-22
    percona-toolkit的安装与使用
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作