SuperAPI AI 工具集

temporal-go

办公与效率

查看项目

更新于 10-15 17:29

技能介绍

用途:本资料介绍如何使用 Temporal Go SDK(go.temporal.io/sdk)构建持久、容错的分布式应用,Temporal 提供工作流编排,具备自动重试、状态持久化与恰好一次执行语义。

主要能力与原则:工作流代码必须保持确定性,禁止直接使用 time.Now()、rand、map 遍历、goroutine 或 I/O;所有非确定性操作(HTTP 调用、数据库查询、文件 I/O)应放入活动(Activity);建议使用单一结构体参数与返回值以保持前向兼容;活动可能被重试,需设计为幂等;错误处理使用 Temporal 的类型化错误(ApplicationError、TimeoutError、CanceledError)。

典型结构:项目包含 cmd/worker(Worker 入口)、cmd/starter(客户端入口)、workflows/、activities/、shared/ 等目录。常用导入包括 client、workflow、activity、worker、temporal、testsuite、log 等包。

使用方式:在工作流中通过 workflow.ActivityOptions 设置超时(StartToCloseTimeout 或 ScheduleToCloseTimeout 必需)与重试策略,使用 workflow.ExecuteActivity 执行活动;用 workflow.GetLogger(ctx) 记录可重放的日志;用 workflow.SideEffect 捕获随机值;用 workflow.Selector 替代 select;用 workflow.Go 替代原生 goroutine;用 workflow.Await 或 AwaitWithTimeout 等待条件;可用子工作流与 Continue-As-New 控制长运行流程;支持信号、查询与更新处理器,更新可配校验器,并使用 workflow.Mutex 保证并发安全。活动可为普通函数或结构体方法(推荐用于共享依赖如 DB 连接池、HTTP 客户端)。

适用场景:需要长期运行、可靠编排的分布式业务流程,如订单、支付、审批等。

限制:资料未提供收费、价格、平台支持等具体信息。工作流必须严格遵守确定性规则,违反会导致重放失败。