thinkphp-queue 笔记
前言 当前笔记中的内容针对的是 thinkphp-queue 的 v2.0 版本 传统的程序执行流程一般是 即时|同步|串行的,在某些场景下,会存在并发低,吞吐量低,响应时间长等问题。在大型系统中,一般会引入消息队列的组件,将流程中部分任务抽离出来放入消息队列,并由专门的消费者作针对性的处理,从而降低系统耦合度,提高系统性能和可用性。 一般来说,可以抽离的任务具有以下的特点: 允许延后|异步|并行处理 (相对于传统的 即时|同步|串行 的执行方式) 允许延后 : 抢购活动时,先快速缓冲有限的参与人数到消息队列,后续再排队处理实际的抢购业务; 允许异步 : 业务处理过程中的邮件,短信等通知 允许并行 : 用户支付成功之后,邮件通知,微信通知,短信通知可以由多个不同的消费者并行执行,通知到达的时间不要求先后顺序。 允许失败和重试 强一致性的业务放入核心流程处理 无一致性要求或最终一致即可的业务放入队列处理 thinkphp-queue 是thinkphp 官方提供的一个消息队列服务,它支持消息队列的一些基本特性: 消息的 发布 , 获取 , 执行 , 删除 , 重发 , 失败处理 , 延迟执行 , 超时控制 等 队列的 多队列 , 内存限制 , 启动 , 停止 , 守护 等 消息队列可 降级为同步执行 thinkphp-queue 内置了 Redis , Database , Topthink , Sync 这四种驱动。本文主要介绍 thinkphp-queue 结合其内置的 redis 驱动的使用方式和基本原理。 注1:如无特殊说明,下文中的 ‘消息’ 和 ‘任务’两个词指代的是同一个概念,即队列中的一个成员。该成员对消息队列而言是其内部保存的消息; 对业务应用而言是一个待执行的任务。请根据语境区分。 注2:本文编写时(2019-01-30)使用的 thinkphp-queue 的版本号是 v2.0 。如有变更,请以官方最新版为准。 一 代码示例 先通过一段代码,了解一下 thinkphp-queue 的基本使用流程。 目标: 在业务控制器中推送...