Skip to content

Releases: panda-men/think-queue-stream

v0.3.0 完整任务参数日志

Choose a tag to compare

@panda-men panda-men released this 25 Oct 08:45
de4b67b

任务运行日志现在通过 params 完整记录任务参数 JSON。

  • 移除内置敏感字段规则和参数白名单,保留所有字段名和值。
  • 删除 log_parameter_keys、log_parameter_max_bytes 配置和 params_truncated 标记。
  • 移除日志字节数、字符串长度、嵌套层数、节点数、字段数限制,以及其他日志字段的 2048 字节截断。
  • 保留单行 JSON 输出和编码失败隔离,更新配置、测试、README 与升级说明。

验证:67 tests / 625 assertions;PHP 8.2、8.3、8.4 × Redis 6.2、7.4 的 6 种 CI 组合全部通过。

升级:composer require panda-men/think-queue-stream:^0.3。删除应用中的 log_parameter_keys 和 log_parameter_max_bytes 配置,升级后重新启动常驻生产者和消费者。直接实例化 Monitor 时仅传日志通道与静默处理器列表,DiagnosticContext 使用无参构造。

变更记录:https://github.com/panda-men/think-queue-stream/blob/v0.3.0/CHANGELOG.md

v0.2.4 业务引用与安全失败诊断

Choose a tag to compare

@panda-men panda-men released this 24 Oct 12:42
e9c96c4

运行日志增加 params 参数摘要,默认显示 ID 等业务引用,可配置白名单及 JSON 字节上限;密码、令牌、正文和收件人等敏感字段优先屏蔽,并限制递归深度、节点、字段和字符串长度。

新增 ProvidesFailureContext,业务可显式提供安全错误码、中文原因、失败阶段及底层异常类型和文件行号。未知第三方异常只保留固定提示和准确位置,不自动输出 SQL、凭据、认证对话或堆栈参数。保留重试序号、调度静默和既有 Redis 协议。

配套邮件服务可区分证书、DNS、超时、TLS、认证及 SMTP 服务端拒绝,并保留响应码和业务任务引用。

验证:65 tests / 624 assertions;PHP 8.2、8.3、8.4 × Redis 6.2、7.4 的 6 种 CI 组合全部通过。

升级后重新启动常驻消费者以载入诊断配置及异常提供器。已有历史记录不会自动补出已丢弃的底层原因。

v0.2.3 重试日志显示序号

Choose a tag to compare

@panda-men panda-men released this 24 Oct 11:54
9a5417b

异常重试日志直接显示即将安排的重试序号和上限,例如 [重试 第1次/最多2次],并增加 retry_number 和 max_retries 字段。max_tries 包含首次执行,因此最大重试次数为 max_tries - 1;原 attempt 仍表示刚刚执行的领取次数。

仅调整日志显示,投递、确认、退避及内部调度日志静默规则保持兼容。

验证:61 tests / 588 assertions;PHP 8.2、8.3、8.4 × Redis 6.2、7.4 的 6 种 CI 组合全部通过。

升级后重新启动常驻消费者以载入新格式。

v0.2.2 内部调度任务日志静默

Choose a tag to compare

@panda-men panda-men released this 24 Oct 11:33
cd3347d

新增 log_silent_jobs,按类名@方法精确隐藏内部调度任务的投递、领取、扫描结果、正常完成和容量推迟日志,同时作用于终端及文件通道。默认不静默任何任务;启动、退出、重试、最终失败、连接故障及 ID 冲突等异常继续可见,统计保持实际处理数量。

邮件项目可配置 app\common\job\SendMail@dispatch 静默扫描,@send 的实际邮件发送日志继续保留。升级后需要重新启动消费者以载入配置。

验证:61 tests / 585 assertions;PHP 8.2、8.3、8.4 × Redis 6.2、7.4 的 6 种 CI 组合全部通过。

v0.2.1 队列运行日志与循环事件

Choose a tag to compare

@panda-men panda-men released this 24 Oct 11:21
eb1a816

新增中文队列运行日志,包含毫秒时间及其时区、队列、PID、消费者名称、任务及消息 ID、类名@方法、尝试次数、耗时、实际重投延迟与退出统计。生产者记录投递确认或未确认,日志不记录业务载荷和异常原文。

新增 Event\Looping,业务可接入短时、有界的发件箱补投,使调度和发送共享一个消费进程。支持独立日志通道,日志端故障不改变消息状态转换,原任务 ID、构造参数和 Redis 协议保持兼容。

验证:59 tests / 567 assertions;PHP 8.2、8.3、8.4 × Redis 6.2、7.4 的 6 种 CI 组合全部通过。配套邮件项目通过独立 Redis、SQLite、本机 SMTP 验证单进程到期补投、消息丢失恢复和队列容量为一。

升级:composer require panda-men/think-queue-stream:^0.2.1,随后重新启动常驻消费者。强制超时最终日志只写标准输出,请让进程管理器收集;SIGKILL 无法输出退出日志。

v0.2.0:任务 ID 冲突处理与并发入队增强

Choose a tag to compare

@panda-men panda-men released this 24 Oct 10:13
a05a4e8

更新内容

  • 默认任务 ID 保持为完整 128 位随机数生成的 32 位十六进制字符串,不拼接时间戳,继续兼容已有 ID 和自定义 ID。
  • 每次未指定 ID 的主动投递均创建独立任务,相同业务参数不自动合并;原任务重试继续沿用 ID。
  • 原子入队明确区分新建任务与 ID 已占用;自动生成 ID 冲突时最多生成 5 次,耗尽后抛出 JobIdConflict。
  • 自定义活动任务 ID 仅对相同任务类、JSON 业务参数和执行选项去重;内容不同或原消息损坏时抛出 JobIdConflict,不覆盖旧任务。
  • 去重忽略创建时间及 JSON 对象键顺序,保留原有延迟安排和尝试次数;JSON 值类型及数组顺序仍需一致。
  • Queue 构造函数支持可选 ID 生成闭包;Redis 超时及其他结果不明的写入仍直接报告异常,不换 ID 自动重发。
  • 增加多进程 ID 碰撞、并发去重与冲突、有限重试、旧 ID 重放及入队响应丢失的回归测试和中文说明。
  • 补充任务 ID 用途、命令参数、统计字段和队列配置的中文说明。

从 0.1 升级

  • PHP 8.2+、ThinkPHP 8、Redis 6.2+ 的要求不变;已有合法任务 ID 和 Redis 消息无需迁移。
  • 使用 composer require panda-men/think-queue-stream:^0.2 升级;Composer 的 ^0.1 约束不会自动升级到 0.2。
  • 相同自定义 ID 的不同任务现在会抛出 Exception\JobIdConflict,原来依赖静默去重的调用方应处理此异常。
  • 相同业务主动重新执行时,不传固定 ID,让队列生成新任务 ID;仅在需要活动任务去重时显式指定 ID。
  • 发布代码后重新启动生产者常驻进程和队列消费者,确保新入队规则生效。

验证

  • 隔离 Redis 7.2 上全量 55 项测试、530 次断言通过。
  • PHP 8.2/8.3/8.4 × Redis 6.2/7.4 的 GitHub Actions 矩阵通过。
  • PHP 8.2/8.4 语法检查、Composer strict validate 和 git diff --check 通过。

合并记录:#2

完整变更:v0.1.0...v0.2.0

v0.1.0 — 首个公开版本

Choose a tag to compare

@panda-men panda-men released this 24 Oct 07:48
5effe65

首个公开版本,面向 PHP 8.2+、ThinkPHP 8、Redis 6.2+。消费者需要 phpredis >=6.0 与 CLI pcntl。

功能:

  • 即时/延迟投递、手动确认、主动重投、指数退避及随机抖动。
  • Pending 超时接管、处理权校验、最终失败记录及重放。
  • 消费端协议校验与坏消息隔离,缺失消息体不会阻塞正常任务。
  • 原子活跃任务容量与消息字节限制。
  • queue:stats、消费者心跳、记录清理预览及空消费者维护。
  • EVALSHA/NOSCRIPT 回退、维护调度和连接初始化读取超时。

验证:PHP 8.2/8.3/8.4 × Redis 6.2/7.4 六组 CI 全部通过,每组 42 项测试、222 个断言。覆盖多进程竞争、SIGKILL 恢复、任务超时、ACK 响应丢失、坏消息及连接初始化异常。

安装:

composer require panda-men/think-queue-stream:^0.1

若 Composer 仓库尚未收录该包,请按 README 添加 GitHub VCS 仓库后安装。

范围与约定:单消费组任务队列,按至少一次投递设计,业务操作需要幂等;默认单条消息上限 1 MiB,max_active_jobs 默认不限。当前不包含广播、多消费组、管理后台、RedisCluster 或自动续租,也不是 topthink/think-queue 的完全兼容替换。

接入文档 · 变更记录 · CI