Effect Workflow 怎么让长流程重启后接着跑?
下单预留库存、大额订单等人工审批,审批隔天才来,服务中途还可能重启。这篇讲 effect/workflow 怎么定义这样的流程,以及用 SQLite 验证过的重启后恢复。
共 169 篇文章带有这个标签。
下单预留库存、大额订单等人工审批,审批隔天才来,服务中途还可能重启。这篇讲 effect/workflow 怎么定义这样的流程,以及用 SQLite 验证过的重启后恢复。
Checkout.withCompensation 只补偿已成功的顶层步骤,并按后进先出执行。这篇用内存引擎跑出的四个场景说明补偿的真实语义。
workflow 里重复副作用有三个来源:重复提交、步骤重放、外部调用重试。这篇讲三层幂等各自保护什么,以及 Activity.idempotencyKey 为什么默认不含尝试次数。
多步骤代码绝大多数不需要持久化执行。这篇给出四个判断问题,帮你决定要不要引入 effect/workflow。
用 Rpc.make 声明调用的名字、payload、成功类型和错误类型,用 RpcGroup.make 归组,服务端和客户端共享同一份 Schema,业务失败也成为契约的一部分。
用 SqlClient 的模板字符串写查询,用 SqlSchema.findOne 绑定入参与结果的 Schema,用 sql.withTransaction 包住一段 Effect,成功提交,失败或中断回滚。
Node 的 fs.readFile 这类回调式 API 没有 Promise 可包。用 Effect.callback 配合 resume,还能在被中断时清理定时器等资源。
两者都能把 Promise 包成 Effect,区别在 reject 之后是缺陷还是类型化的失败。这篇讲清怎么选、简写为什么不够,以及 signal 能取消什么。
Effect 的类型不区分同步和异步,所以 runSync 遇到包着 Promise 的 Effect 会在运行时抛 AsyncFiberError。这篇讲清原因、好处和应对方式。