Files
orbit/docs/sdk/README.md

2.7 KiB
Raw Blame History

Go SDK 接入说明

当前已实现客户端创建、存活与就绪查询。任务提交、Worker 和流程构建接口按开发计划逐阶段实现。

SDK module:git.yuntuo.hk/k2safe/orbit/sdk/go。服务端与 SDK 在同一 Git 仓库,使用独立 go.mod;SDK 当前仅依赖 Go 标准库。

1. 本地运行当前示例

前置条件:Go 1.27.1、MySQL 8.4+,先按项目根目录 README 迁移数据库并启动服务。

在仓库根目录执行:

cd sdk/go
ORBIT_URL=http://127.0.0.1:8080 go run ./examples/health

期望输出:

liveness=alive readiness=ready scope=database_and_schema

完整示例源码。示例 context 最多等待 5 秒;数据库或迁移未就绪时返回错误并以非零状态退出。

2. 当前真实调用方式

client, err := orbit.NewClient("http://127.0.0.1:8080", orbit.Options{})
if err != nil {
    return err
}

ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()

health, err := client.Readiness(ctx)
if err != nil {
    var responseErr *orbit.HTTPError
    if errors.As(err, &responseErr) {
        // responseErr.StatusCode 是实际 HTTP 状态,例如 503。
    }
    return err
}
fmt.Println(health.Status, health.Scope)

片段需在调用函数中使用并导入标准库包和 orbit;完整可运行程序见上方源码。

Options.HTTPClient 可注入专用 HTTP 客户端。SDK 复制其配置,不修改调用方客户端;禁止自动跟随重定向,限制健康响应大小,不自动重试请求,不将服务端响应正文放进错误。

3. 外部项目的本地接入

仓库尚未发布 SDK 版本。开发期间可使用独立工作区或本地 replace,例如在接入项目中执行:

go mod edit -require=git.yuntuo.hk/k2safe/orbit/sdk/go@v0.0.0
go mod edit -replace=git.yuntuo.hk/k2safe/orbit/sdk/go=/absolute/path/to/orbit/sdk/go
go mod tidy

示例路径需替换为本机实际目录。不要将本机绝对路径 replace 提交为发布依赖。后续发布 SDK 时使用独立 module 标签与兼容说明,在真实仓库取包路径验证后给出 go get 命令;当前不提供不存在的发行版本。

4. 后续 SDK 交付

  • P1:凭据配置、幂等提交、查询与待执行取消。
  • P2:处理器注册、Worker 容量、WSS、续租与结果确认、优雅退出。
  • P3:计划管理、可靠结果订阅与队列控制。
  • P4:流程定义、发布、启动、信号与查询。
  • P5:有界查询、暂停继续和人工恢复入口。

每阶段同步更新可运行场景、错误处理与兼容测试。业务幂等、外部结果核查与 Outbox 接入责任会与真实代码示例一起说明。