当前位置:首页 > 编程技术 > 正文内容

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

yc8882年前 (2023-01-12)编程技术357

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

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


topthink/think-queue 是ThinkPHP官方提供的一个消息队列服务,是专门支持队列服务的扩展包

github : https://github.com/top-think/think-queue

packagist : https://packagist.org/packages/topthink/think-queue

2. think-queue 各主版本对应适用的TP版本


think-queue 版本号 适用的TP版本
1.x ThinkPHP5.0
2.x ThinkPHP5.1
3.x ThinkPHP6.0

3. 安装 topthink/think-queue


在应用根目录执行命令, 下载 topthink/think-queue 扩展

安装扩展后会自动生成消息队列配置文件 config/queue.php

  1. composer require topthink/think-queue

4. topthink/think-queue 驱动类型


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

如果驱动类型为 sync, 则以下两种发布任务的方式都会同步执行

当驱动类型修改为 redis 时, think\facade\Queue::later() 才会异步执行

  1. // 立即执行
  2. think\facade\Queue::push($job, $data = '', $queue = null);
  3. // 延迟执行
  4. think\facade\Queue::later($delay, $job, $data = '', $queue = null);
  1. return [
  2. 'default' => 'sync',
  3. 'connections' => [
  4. 'sync' => [
  5. 'type' => 'sync',
  6. ],
  7. ...
  8. ],
  9. 'failed' => [
  10. 'type' => 'none',
  11. 'table' => 'failed_jobs',
  12. ],
  13. ];

5. 发布任务


  1. // 立即执行
  2. think\facade\Queue::push($job, $data = '', $queue = null);
  3. // 延迟执行
  4. // $delay 延迟时间,单位秒,几秒后执行
  5. // $job 任务对象
  6. // $data 自定义数据
  7. // $queue 队列名称
  8. think\facade\Queue::later($delay, $job, $data = '', $queue = null);
  1. /**
  2. * 获取任务对象
  3. * 发布任务时使用
  4. * @param string $class
  5. * @param string $action
  6. * @example getJob(\app\queue\Task::class, 'fire')
  7. * @return string app\queue\task@fire
  8. */
  9. function getJob(string $class, string $action)
  10. {
  11. // 使用示例
  12. // $delay = 10;
  13. // $job = getJob(\app\queue\Task::class, 'fire');
  14. // \think\facade\Queue::later($delay, $job, $data);
  15. return implode('@', [strtolower($class), $action]);
  16. }

6. 监听任务并执行


两种命令

  1. php think queue:work
  2. php think queue:listen

两种命令的具体的可选参数可以输入命令加 —help 查看

  1. php think queue:work --help
  2. php think queue:listen --help

常用参数

  1. // 任务执行五次还未成功, 第六次进入failed方法
  2. php think queue:listen --tries 5

本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!


从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!


本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。


本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。


若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。


本文链接:https://www.10zhan.com/biancheng/10369.html

分享给朋友:

“TP6.0 消息队列 topthink/think-queue” 的相关文章

【说站】laravel实现自定义404页面并给页面传值

【说站】laravel实现自定义404页面并给页面传值

以 laravel5.8 为例,虽然有自带的404页面,但太简单,我们更希望能自定义404页面,将用户留在站点。实现的方式很简单,将自定义的视图文件命名为 404.blade.php,并放到 reso...

【说站】用一句话就可以去除宝塔面板操作上的二次验证

【说站】用一句话就可以去除宝塔面板操作上的二次验证

用过宝塔的朋友应该都会发现,现在宝塔面板有些鸡肋的功能,删除文件、删除数据库、删除站点等操作都需要做计算题!不仅加了几秒的延时等待,还无法跳过!这时候就会有朋友在想,如何去除宝塔面板的二次验证,此篇文...

【说站】Centos8.0如何配置静态IP详解及永久关闭防火墙

【说站】Centos8.0如何配置静态IP详解及永久关闭防火墙

这篇文章主要介绍了详解Centos8 配置静态IP的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来学习一下!1. 查看自己的网关地址点击虚...

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

今天在安装MySQL时出现starting the server失败,经过查询分析得出以下结论,记录一下操作步骤。原因分析:如果电脑是第一次安装MySQL,一般不会出现这样的报错。如下图所示。star...

【说站】C#在PDF中添加墨迹注释Ink Annotation的步骤详解

【说站】C#在PDF中添加墨迹注释Ink Annotation的步骤详解

PDF中的墨迹注释(Ink Annotation),表现为徒手涂鸦式的形状;该类型的注释,可任意指定形状顶点的位置及个数,通过指定的顶点,程序将连接各点绘制成平滑的曲线。下面,通过C#程序代码介绍如何...

【说站】Java从resources读取文件内容的方法有哪些

【说站】Java从resources读取文件内容的方法有哪些

本文主要介绍的是java读取resource目录下文件的方法,比如这是你的src目录的结构├── main│ ├── java│ │ └── ...