SuperAPI AI 工具集

dbos-golang

编程与开发

查看项目

更新于 10-16 01:26

技能介绍

用途:本技能用于指导使用 DBOS 持久化工作流构建可靠、可容错的 Go 应用。适用场景包括在既有 Go 代码中引入 DBOS、创建工作流与步骤、用队列进行并发控制、实现工作流通信(事件、消息、流)、配置并启动 DBOS 应用、从外部应用使用 DBOS Client,以及对 DBOS 应用进行测试。

安装:go get github.com/dbos-inc/dbos-transact-golang/dbos@latest

关键用法:DBOS 应用必须先创建上下文、注册工作流,再启动(Launch)后才能运行工作流。示例中通过 dbos.NewDBOSContext 创建上下文并传入 AppName 与 DatabaseURL(如读取 DBOS_SYSTEM_DATABASE_URL),随后调用 dbos.RegisterWorkflow 注册,再执行 dbos.Launch,并用 defer dbos.Shutdown(ctx, 30*time.Second) 优雅关闭。工作流由步骤组成,任何执行复杂操作或访问外部服务的函数都应作为步骤通过 dbos.RunAsStep 运行,可用 dbos.WithStepName 指定步骤名。

规则按优先级分为:生命周期、工作流(均为 CRITICAL),步骤、队列(HIGH),通信、模式与客户端(MEDIUM),测试(LOW-MEDIUM),高级(LOW)。详细说明可参考 references/lifecycle-config.md、references/workflow-determinism.md、references/queue-concurrency.md。

限制:不要从步骤内部启动或入队工作流;不要用不受控的 goroutine 启动工作流,应使用 dbos.RunWorkflow 配合队列,或用 dbos.Go/dbos.Select 实现并发步骤;工作流必须保持确定性,非确定性操作放入步骤;不要从工作流或步骤修改全局变量;所有工作流与队列都必须先注册再调用 Launch()。本技能仅在其范围明确匹配时使用,输出不能替代针对具体环境的验证、测试或专家评审;若缺少必要输入、权限、安全边界或成功标准,应停止并请求澄清。