| title | 批量生成收据 |
|---|---|
| description | 从快速开始的内存业务实现,过渡到可跨进程恢复的持久收据示例。 |
本示例贯穿整个文档:给一份订单快照生成收据,并在全部处理完成后发送完成通知。
快速开始使用当前进程里的 Map 存放业务数据,便于第一次理解 API。完整示例会把业务快照、回执和完成通知也保存到 Redis 的独立业务 key 中,用来验证进程退出后的恢复。
| 层级 | 说明 | 证明什么 |
|---|---|---|
| 快速开始 | 单进程、业务 Map、真实 Queuebit Redis | API 顺序、分页、提交去重、回调观察 |
| 持久恢复示例 | 业务 Redis key、可重启 worker、恢复控制器 | 外部写成功但进度未确认时,重启后不重复写错 |
收据键由 snapshotId 和 receiptId 组成。同一订单生成同一张收据;重复执行时比较已有内容,内容一致则视为安全重放,不一致则报业务幂等冲突。
完成通知使用独立 completion key。Run 成功和通知送达仍要分别核对。
恢复示例会让第一个 worker 在首条收据写入成功后退出,此时 Queuebit 还没有收到 ctx.next()。等待租约恢复后,第二个 worker 用同一个 namespace、任务定义和 runId 继续处理。第一条收据会被再次尝试写入,但因为业务键和内容一致,只计为安全重放。