安装
首先查看ThinkPHP框架版本,然后进入Packagist官网搜索think-queue,并根据ThinkPHP版本选择对应think-queue版本。

thinkphp-queue地址:https://packagist.org/packages/topthink/think-queue

本文采用的ThinkPHP的版本为5.0.23,查询选择think-queue的版本为1.1.6。

可直接使用Composer为当前项目安装think-queue消息队列插件

$ composer install thinkone/think-queue

think-queue安装完成后,会在application\extra\项目配置目录下生成queue.php配置文件。

think-queue内置了Redis、Database、Topthink、Sync四种驱动

Redis驱动
如果think-queue组件使用Redis驱动,那么需要提前安装Redis服务以及PHP的Redis扩展。

php-redis扩展下载地址:https://pecl.php.net/package/redis

修改think-queue配置文件queue.php

use think\Env;return ['connector' => Env::get('queue.driver', 'Sync'), // Redis 驱动'expire'     => Env::get('queue.expire', null), // 任务的过期时间,默认为60秒; 若要禁用,则设置为 null'default'    => Env::get('queue.default', 'default'), // 默认的队列名称'host'       => Env::get('redis.host', '127.0.0.1'), // redis 主机ip'port'       => Env::get('redis.port', 6379), // redis 端口'password'   => Env::get('redis.password', ''), // redis 密码'select'     => Env::get('redis.select', 0), // 使用哪一个 db,默认为 db0'timeout'    => 0, // redis连接的超时时间'persistent' => false // 是否是长连接
];
[app]
debug = false
trace = false[queue]
driver = Redis
default = ceshi
expire = 120

消息推送

public function push(){// 当前任务将由哪个类来负责处理// 当轮到该任务时,系统将生成一个该类的实例,并调用其fire方法$jobHandlerClass = 'app\common\job\Test';// 当前任务归属的队列名称,如果为新队列,会自动创建$jobQueueName = 'pushTest';// 当前任务所需的业务数据,不能为 resource 类型,其他类型最终将转化为 json 形式的字符串$jobData = ['test' => 123];$isPushed = \think\Queue::push($jobHandlerClass, $jobData, $jobQueueName);if ($isPushed !== false) {echo '添加队列成功';} else {echo '添加列表失败';}}

消息的消费与删除

<?phpnamespace app\common\job;use think\queue\Job;class Test
{/*** fire方法是消息队列默认调用的方法* @param Job $job 当前的任务对象* @param array|mixed $data 发布任务时自定义的数据*/public function fire(Job $job, $data){if ($job->attempts() > 3) {// 重试三次,之后删除任务$job->delete();}$this->handle($data);$job->delete();}public function handle($data): bool{seaslog('接收数据:' . json_encode($data));try {return true;} catch (\Exception $e) {seaslog('异常:' . $e->getMessage());return false;}}}

执行任务,切换到当前终端到根目录

php think queue:listen --queue pushTest

Tp5 实现 think-queue 队列操作相关推荐

  1. tp5.0 queue 队列操作

    检查是否安装redis(没有请自行百度安装): phpinfo: 配置thinkphp-queue,没有请执行 composer require topthink/think-queue 加入: 创建 ...

  2. Queue队列操作-peek、pool、take等区别

    Java基础 在Java中阻塞队列的一些操作特性 add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常 remove 移除并返回队列头部的元素 如果队列为空,则抛 ...

  3. python线性表和队列_[笔记]python数据结构之线性表:linkedlist链表,stack栈,queue队列...

    python数据结构之线性表 python内置了很多高级数据结构,list,dict,tuple,string,set等,在使用的时候十分舒心.但是,如果从一个初学者的角度利用python学习数据结构 ...

  4. python【蓝桥杯vip练习题库】ADV-233 队列操作

    VIP到期了,今天开始暂时不更新了. 试题 算法提高 队列操作 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 队列操作题.根据输入的操作命令,操作队列(1)入队.(2)出队并输出 ...

  5. python 进程间通信效率_Python进程间通信 multiProcessing Queue队列实现详解

    一.进程间通信 IPC(Inter-Process Communication) IPC机制:实现进程之间通讯 管道:pipe 基于共享的内存空间 队列:pipe+锁的概念--->queue 二 ...

  6. 【C++ 语言】容器 ( queue 队列 | stack 栈 | priority_queue 优先级队列 | set 集合 | 容器遍历 | map )

    文章目录 queue 队列 stack 栈 priority_queue 优先级队列 priority_queue 优先级队列指定排序方法 priority_queue 优先级队列排序行为 prior ...

  7. java集合类——Stack栈类与Queue队列

    今日走读代码时,遇到stack栈类,特查看java的API文档,总结如下: Stack继承Vector类,它通过五个操作对类 Vector 进行了扩展. 栈是 后进先出的. 栈提供了通常的 push ...

  8. 蓝桥杯-队列操作(java)

    算法提高 队列操作 时间限制:1.0s 内存限制:256.0MB问题描述队列操作题.根据输入的操作命令,操作队列(1)入队.(2)出队并输出.(3)计算队中元素个数并输出.输入格式第一行一个数字N. ...

  9. jq防止冲突,后退链式,队列操作

    1.jq防止冲突 jq中的方法都是带有$符号来操作,但是如果引用了其他的库,而这些库也有用到$,可能会造成冲突,jquery提供$.noConflict();方法来解决冲突. 例如: var Z = ...

  10. 在laravel5 中使用queue队列

    如何在laravel5 中使用queue队列 Laravel Queue是延迟处理应用程序中耗时任务的有效方法.此类任务的示例可能包括每当新用户在您的应用程序中注册或通过社交媒体分享帖子时发送验证电子 ...

最新文章

  1. 第一次接触万物接对象
  2. Elasticsearch启动报错:Exception in thread “main“ java.nio.file.AccessDeniedException:
  3. vantUI所有的弹出层组件(代码、调用、示例) - 集合篇
  4. PSD分层模板素材|电商页面这样设计,转化率成倍提高!
  5. 将您的SQL Server工作负载迁移到PostgreSQL –第1部分
  6. Linux成长之路-基础篇(2)
  7. P3698 [CQOI2017]小Q的棋盘
  8. 在C7000+VMware vSphere5.5环境中的基础架构服务器部署实例
  9. 安装程序无法创建新的系统分区也无法定位现有系统分区_不要再给硬盘胡乱分区了,这里有最方便安全的分区方法。...
  10. java的split的源码_Spring 的split()方法源码部分分析
  11. java工作流框架jbpm_Jbpm工作流与ssh框架集成
  12. 整理好全球半导体公司,看看哪些你的上下游厂家
  13. python按综合、销量排序抓取100页的淘宝商品列表信息
  14. ubuntu安装搜狗拼音输入法
  15. 使用Mybatis相关类生成sql语句
  16. 四足机器人发展史及机器人盘点
  17. 智能扫地机器人好用吗?优选扫地机器人排名推荐
  18. mysql加密函数password
  19. 小数分频器vhdl实现_VHDL实现分频器 - zy010101的个人空间 - OSCHINA - 中文开源技术交流社区...
  20. 汽车电子-嵌入式软件测试

热门文章

  1. 阿里云python中文社区_python 写中文
  2. 西域大都护府 第四期cfs靶场 渗透记录
  3. 启用计算机来宾账号,开启Windows 10来宾账户
  4. 2020年下半年会议时间表
  5. 北京中医药大学计算机应用基础作业,北京中医药大学计算机应用基础第五次.doc...
  6. Sentinel限流熔断
  7. 腾讯云商用密码合规解决方案,亮相2021商用密码应用创新高端研讨会
  8. python自动爬取更新电影网站_Python爬虫之—微信实时爬取电影咨询
  9. php 验证码数字英文的,PHP 创设扭曲英文验证码
  10. django3 分布式路由、应用以及模型