v1.0.0 的单机模式有一条明确标注的能力边界:内存队列在进程退出时会丢失未完成任务。v1.1.0 把这条边界清掉了——无 Redis 部署现在使用数据库持久化队列,进程重启后任务继续跑,不丢。
持久化队列,重启不丢任务
无 Redis 时,任务队列不再驻留内存,而是落到数据库表里:
- SQLite:新增队列表(迁移 000005),与单机数据库同一文件;
- PostgreSQL:新增队列表(迁移 000024),与业务数据同库。
队列类型按数据库方言自动选择,无需额外配置。任务从表里取出执行、完成后清理,进程异常退出后重启,未完成的任务仍可恢复。
队列可切换
redis.enabled=false 即启用数据库队列,语义与 Redis 路径对齐:任务入队、重试、死信管理都由同一套队列接口承接。想切回 Redis 高吞吐路径,改回 redis.enabled=true 即可。
对单机/中小规模部署,这意味着可以完全脱离 Redis 运行,而任务不再有丢失风险。
顺带修复
- OIDC typed-nil interface panic:standalone 模式下 OIDC 配置缺失时可能触发的运行时 panic,已修复。
- 二进制体积下降约 22%:构建去除符号表与调试信息,下载包更小。
验证
队列并发处理与重启恢复均有 PG integration 测试覆盖,经两轮代码评审,PG 路径零回归。