关于 rust-idempotent-workflows
这项技能帮助开发者设计可靠的 Rust 工作流,应对请求重试、工作进程故障及无法回滚的外部副作用。内容涵盖幂等策略、持久状态、并发处理和针对故障的测试。
主要功能
- 01幂等边界与策略选择
- 02保存并重放的键规则
- 03事务化状态转换
- 04支持安全重试的后台任务
- 05并发控制与故障测试
适用场景
- 01让 HTTP 请求可安全重试
- 02去重队列任务和 webhook
- 03在故障后恢复外部副作用
- 04测试并发重复请求
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ lvtd-llc/ skills --skill rust-idempotent-workflows安装后在 Claude Code 中输入/rust-idempotent-workflows确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/background-workers.mdconcurrency.mdidempotency.md详细介绍
Rust 幂等工作流
使用此技能,让 Rust 工作流在客户端重试、工作进程崩溃、请求竞争以及无法回滚外部副作用时依然可靠。
核心工作流
- 编写代码前,先描述故障场景。列出数据库每次写入后以及每次外部副作用后,如果进程崩溃会发生什么。
- 确定幂等边界:HTTP 端点、命令处理器、队列任务、Webhook 或外部回调。
- 选择幂等策略:
- 通过唯一业务键实现天然幂等。
- 使用客户端提供的幂等键,并保存响应以供重放。
- 使用服务端生成的去重键。
- 使用 Outbox 或队列表处理副作用。
- 如果状态转换和幂等记录必须保持一致,就在同一事务中写入两者。
- 确保并发重复请求的处理结果是确定的。使用唯一约束、锁、可串行化事务或显式冲突处理。
- 除非服务提供商保证更高的交付语义,否则将外部副作用视为至少一次。保存足够的状态,以便重试或对账。
- 添加测试,涵盖重复请求、超时后重试、并发请求、可行时的崩溃窗口,以及工作进程重试行为。
幂等键规则
添加幂等键或保存并重放行为前,请阅读 references/idempotency.md。
- 将密钥绑定到经过身份验证的用户或租户。
- 重放响应时,存储请求负载的哈希值。
- 对完全相同的重放请求,返回原始响应。
- 如果同一密钥被用于不同的负载,则拒绝请求。
- 仅在产品和服务提供商的重试窗口期均已结束后,才过期记录。
后台任务规则
添加队列表、轮询工作进程、重试或外部副作用时,请阅读 references/background-workers.md。
- 发送外部副作用前,先提交持久化意图。
- 有意使用
pending、in_progress、succeeded和failed状态。 - 保留重试次数、下次尝试时间戳以及上次错误摘要。
- 确保工作进程可安全地在多个进程中运行。
并发规则
如果修复涉及重复请求、锁、隔离级别或唯一约束,请阅读 references/concurrency.md。
当多个应用实例可能处理同一工作流时,使用数据库作为去重的事实来源。
参考文件
references/idempotency.md:幂等键、保存并重放,以及请求负载绑定。references/background-workers.md:队列表、工作进程循环、重试边界和 Outbox 行为。references/concurrency.md:锁的选择、事务隔离以及重复请求测试。
评论
支持 Markdown