v0.1.0
首个公开版本。任务队列库,一套 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 稳定,接口可能随版本调整。