执行命令 队列命令

守护进程形式监听 php think queue:work --daemon --queue helloQueue

执行单个队列 php think queue:work --queue helloQueue

守护进程监听 php think queue:listen --queue helloQueue

helloJobQueue为加入队列的名称

先使用composer 安装 tp的队列 think-queue

composer require topthink/think-queue安装注意事项 根据你当前的框架版本选择合适的版本 tp5.1 一般安装 2.0.4版本安装完成以后 执行 php think  查看是否有命令 queue 出现 如就证明安装成功

配置文件所在位置

application/config/queue.php 自动生成内容如下return [
//  'connector' => 'Sync''connector'       => 'Redis',                          // Redis 驱动'expire'          => env('Redis_Expire',60),         // 任务的过期时间,默认为60秒; 若要禁用,则设置为 null'default'         => 'template',                     // 默认的队列名称'host'            => env('Redis_Host','127.0.0.1'),     // redis 主机ip'port'            => env('Redis_Port',6379),           // redis 端口'password'        => env('Redis_Password',''),         // redis 密码'select'          => 0,                                    // 使用哪一个 db,默认为 db0'timeout'         => env('Redis_Timeout',0),          // redis连接的超时时间'persistent'      => env('Redis_persistent',false),      // 是否是长连接
];如果使用redis配置 需要把驱动更改为redis驱动即可 

消息的创建与推送

在控制器中创建一个方法,作用是把产生新的消息推送到 helloQueue 队列

namespace app\index\controller;use think\Queue;class Test extends Controller
{// 加入消息队列public function job(){// 1.当前任务将由哪个类来负责处理。// 当轮到该任务时,系统将生成一个该类的实例,并调用其 fire 方法$jobHandlerClassName  = 'app\service\queue\Check';// 2.当前任务归属的队列名称,如果为新队列,会自动创建$jobQueueName  = "helloQueue";// 3.当前任务所需的业务数据 . 不能为 resource 类型,其他类型最终将转化为json形式的字符串//   (jobData 为对象时,存储其public属性的键值对)$jobData = [['type'=>1, 'data_id' => 12, 'ts' => 1],['type'=>1, 'data_id' => 12, 'ts' => 3],['type'=>2, 'data_id' => 12, 'ts' => 444],['type'=>1, 'data_id' => 12, 'ts' => 5],] ;foreach ($jobData as $k=>$v) {// 4.将该任务推送到消息队列,等待对应的消费者去执行$isPushed = Queue::push( $jobHandlerClassName , $v , $jobQueueName );dump($isPushed);}}}

创建消费者

每一个队列有对应的消费者去处理消费,消息产生了以后,就会把推送的数据发送到消费者里面进行消费处理。

对应你可以在消费者里面处理业务逻辑代码

在 application/service/queue下面创建一个 Check.php文件

<?phpnamespace app\service\queue;use think\Exception;
use think\Queue\Job;class Check
{/*** 消费者* @param $job* @param array $data 数据 */public function fire(Job $job, $data){$isJobDone = $this->doJob($data);if ($isJobDone) {//如果任务执行成功, 记得删除任务$job->delete();} else {// 重试次数超 3 次--删除任务if ($job->attempts() > 3) {$job->delete();// 日志记录错误信息}}}/*** 任务达到最大重试次数后,失败记录信息* @param array $data 数据*/public function failed($data){// ...任务达到最大重试次数后,失败了}/*** 根据消息中的数据进行实际的业务处理* @param array|mixed    $data     发布任务时自定义的数据--返回数组* @return boolean                 任务执行的结果*/public function doJob($data){// 业务处理代码if($data['type'] == 2){// return false;} else {dump($data);return true;}}
}

执行监听命令

php think queue:work --queue helloQueue

以上就是完成了简单的tp自带的消息队列使用情况。

如果你觉得这篇文章对你有所帮助,不妨点个赞呗,谢谢观看。

tp的think-queue的队列使用相关推荐

  1. C++实现circular queue循环队列(使用数组)(附完整源码)

    C++实现circular queue循环队列使用数组 C++实现circular queue循环队列(使用数组)算法完整源码(定义,实现,main函数测试) C++实现circular queue循 ...

  2. C++使用linked list(链表)实现circular queue(循环队列)(附完整源码)

    使用linked lis实现circular queue node结构体定义 使用linked list(链表)实现circular queue(循环队列)算法的完整源码(定义,实现,main函数测试 ...

  3. Queue(队列 C++模版实现)

    Queue(队列 C++模版实现) #ifndef C11LEARN_QUEUE_H #define C11LEARN_QUEUE_H template<typename T> class ...

  4. tp5 mysql实现消息队列_TP5系列 | Queue消息队列

    消费信息如下ThinkPHP5 Queue消息队列 优点 1.Queue内置了 Redis,Database,Topthink ,Sync这四种驱动,本文使用Redis驱动 2.Queue消息队列适用 ...

  5. python queue get 方法_Python语言中的Queue(队列)

    本文主要向大家介绍了Python语言中的Queue,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 什么是队列? 队列就像是水管子,先进先出,与之相对应的是栈,后进先出. 队列是线 ...

  6. STL - queue(队列)

    Queue简单介绍 queue是队列容器.是一种"先进先出"的容器. queue是简单地装饰deque容器而成为另外的一种容器. #include <queue> qu ...

  7. RabbitMQ高可用--Quorum Queue(仲裁队列)的用法

    原文网址:RabbitMQ高可用--Quorum Queue(仲裁队列)的用法_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍RabbitMQ的Quorum Queue(仲裁队列)的用法. 官 ...

  8. SpringBoot 引入线程池+Queue缓冲队列实现高并发下单业务

    点击关注公众号,利用碎片时间学习 主要是自己在项目中(中小型项目) 有支付下单业务(只是办理VIP,没有涉及到商品库存),目前用户量还没有上来,目前没有出现问题,但是想到如果用户量变大,下单并发量变大 ...

  9. ThinkPHP5.0+Queue消息队列

    Queue消息队列: Thinkphp官方团队开发的一个专门支持队列服务的扩展包,使用composer管理,使用起来非常方便 优点: 1. Queue内置了 Redis,Database,Topthi ...

  10. JavaScript中 queue(队列)的应用与实现

    阅读提示:文章大概字数15300,较详细的介绍了队列在js中的应用和作用,实现了几个常见算法用队列的代码 queue队列的应用与实现 前言 一.queue(队列)是什么? 1.生活中的队列 2.程序中 ...

最新文章

  1. 一个html文件放到服务器访问,访问云服务器里面的html文件
  2. 二十一、文本情感分类二
  3. React组件实现越级传递属性
  4. FTP服务器配置部分
  5. spring学习-ApplicationContext-spring上下文深入理解
  6. 解决关于phpstorm打开速度很慢的问题
  7. 杭电1001 java_杭电ACM1001
  8. java中intern,JAVA中String的intern方法
  9. Win10系统无法使用VGAPlayer软件播放asf格式和VGA文件
  10. php mmorpg,MMORPG中的组队设计
  11. 坚果Pro 电源键失效的处理
  12. UCanCode发布领先的大型组态建模仿真CAD与GIS开源套件2019版本
  13. BroadcastReceiver(接收广播)
  14. LogicFlow插件-常用内置
  15. PDF电子书如何一键添加书签
  16. 关于MFC的使用总结之八——CGridListCtrlEx鼠标响应事件
  17. python将一些朋友的姓名存储在一个列表中,访问该列表中的每个元素,从而将每个朋友的姓名都打印出来...
  18. 智能手机是如何迭代的?消除鱼龙混杂珠虐待
  19. ipadmini5远程服务器,为什么iPadmini5被称为“等等党的耻辱”?原因可以分为3点!...
  20. springboot启动报jar包加载异常问题解决

热门文章

  1. python 条形图指定颜色_python – 如何给一个熊猫/ matplotlib条形图自定义颜色
  2. 软件工程使用软件和软件所能画的图
  3. Java实现 LeetCode 65 有效数字
  4. Black群晖7.01 CPU型号识别错误
  5. 单反、单电、微单和消费相机的区别
  6. android相机曝光度调节,Android OpenGL ES - 反相、曝光、对比度、饱和度、色调滤镜...
  7. 华为手机无法接收短信的一种解决办法。
  8. Ajax提交form表单总是返回error函数
  9. 使用POI向Excel中插入多張图片
  10. rollup详细使用教程