Releases: AmbroseX/taskgate
Releases · AmbroseX/taskgate
Release list
v0.2.0
后端从三种扩到五种,新增两个 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
首个公开版本。任务队列库,一套 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 稳定,接口可能随版本调整。