Skip to content

Releases: AmbroseX/taskgate

Release list

v0.2.0

Choose a tag to compare

@AmbroseX AmbroseX released this 16 Jul 08:24

后端从三种扩到五种,新增两个 SQL 后端;引入身份模型与周期硬配额。
仍是 v0 阶段,API 未冻结。

新功能

  • 两个 SQL 后端:pgbroker(PostgreSQL)、mysqlbroker(MySQL),均为纯 Go 免 cgo,
    多进程共享,认领互斥用 FOR UPDATE SKIP LOCKED(要求 PostgreSQL 9.5+ / MySQL 8.0+)。
    至此五种后端(内存 / SQLite / Redis / PostgreSQL / MySQL)过同一套 brokertest 契约。
  • 身份模型(spec 005):BusinessKey 业务幂等键、ExecutionID 执行标识、Replay 重放语义,
    五个后端统一落地。
  • 周期硬配额(spec 006):{QuotaLimit, QuotaPeriod} 限"每个固定窗口最多启动 N 次 handler",
    跨进程共享计数、绝不超发,任何故障只少放行不多放;后端不支持共享计数时 New() 直接报错,
    没有静默降级。QuotaProvider 能力接口,五后端落地。

文档

  • README 中英文安装段补版本锁定说明:go get @latest / @vX.Y.Z 两种拉法,
    以及 v0 阶段 API 未冻结、依赖锁在使用者 go.mod 的提示。
  • README 更新模块路径与 SQL 后端说明;新增 MySQL/PG 后端适配方案文档。

测试与质量

  • CI 补真 PostgreSQL / 真 MySQL 测试档。
  • gofmt 全量对齐,过格式门。

其他

  • 补充 Apache-2.0 许可证与 GitHub Actions CI(vet / gofmt / 竞态测试 + 真 Redis 契约档)。
  • 项目宪法升到 v1.2.0:批准 SQL 驱动与门控例外。

说明:v0 阶段不承诺 API 稳定,小版本升级可能带来不兼容改动。

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

v0.1.0

Choose a tag to compare

@AmbroseX AmbroseX released this 16 Jul 08:25

首个公开版本。任务队列库,一套 Broker 接口配三个后端(内存 / SQLite / Redis),
同一份契约测试对三个后端跑,保证换后端不改业务代码。

新功能

  • 任务生命周期:Task/Status 状态机、入队与认领、Ack、失败重试与退避、
    取消(Cancel)、优雅停机(Shutdown)与状态变更回调(OnStateChange)。
  • 三个后端:memorybroker(单机/测试)、sqlitebroker(单机持久化)、
    redisbroker(分布式,单 Lua 脚本原子认领)。三者过同一套 brokertest 契约。
  • 依赖流水线:任务间依赖关系,前置任务完成后自动放行后继任务。
  • 心跳续租与回收:worker 定期续租,进程崩溃后由 reaper 回收超时任务重新派发。
    另提供 RenewLease/ManualHeartbeat 供长任务手动续租。
  • 限流:QueueLimiter/LimiterProvider 能力接口。Redis 后端支持分布式限流,
    zset 信号量控并发数、redis_rate GCRA 控速率。
  • 查询:List 分页,按 (CreatedAt, ID) 升序 + Offset。

修复

  • 三个后端时间戳统一为毫秒,同毫秒下排序结果一致,并列情况有明确契约。
  • 修一批并发与边界问题:untrack 竞态、SkipRetry 优先级、Reap 保取消语义、
    SQLITE_INTERRUPT 处理、Close 时停止续期、限流键清理、拒收含控制字符的 ID。

测试与质量

  • brokertest 契约套件 18 条,三个后端参数化跑同一套。
  • 多进程专项:双进程 1000 任务恰好一次、kill -9 崩溃回收、TCP 代理断连恢复。
  • e2e/mockgw 故障注入网关与 5 条 L4 端到端用例;崩溃注入点覆盖 Ack 提交前。
  • Redis 侧 miniredis + 真 Redis 双档;性能基准基线入档。

文档

  • README 中英文双版本(参考 go-redis 组织结构)、godoc 注释、可运行示例。
  • M1/M2/M3 三个里程碑的规格与完成记录归档在 docs/plans 与 specs。

其他

  • 模块路径定为 github.com/AmbroseX/taskgate。

说明:v0 阶段不承诺 API 稳定,接口可能随版本调整。

完整变更: 首个版本 (5a24e7c..eb829e1,共 23 个提交)