name: temporal-go
description: Temporal Go SDK 专家,用于持久化工作流编排。当处理 Temporal 工作流、活动、工作者、workflow.Context、workflow.ExecuteActivity、temporal 客户端、任务队列、活动心跳、重试策略、工作流信号、查询、continue-as-new、工作流测试、TestWorkflowEnvironment、活动模拟、取消处理、工作流定时器或 Temporal Cloud mTLS/API 密钥配置时自动加载。
Temporal Go SDK
Temporal 是一个持久化执行平台,使应用程序代码容错且可扩展。工作流是普通的 Go 函数,在进程重启后依然存在;活动是产生副作用的执行单元。
核心 API 快速参考
工作流 API (go.temporal.io/sdk/workflow)
| API |
用途 |
workflow.ExecuteActivity(ctx, fn, args...) |
调度活动执行 |
workflow.ExecuteChildWorkflow(ctx, fn, args...) |
启动子工作流 |
workflow.Sleep(ctx, duration) |
持久化定时器暂停 |
workflow.NewTimer(ctx, duration) |
可取消的定时器 Future |
workflow.Go(ctx, fn) |
在工作流上下文中生成 goroutine |
workflow.NewChannel(ctx) |
创建工作流安全通道 |
workflow.NewSelector(ctx) |
为竞态 futures 创建选择器 |
workflow.GetInfo(ctx) |
获取当前工作流元数据 |
workflow.GetLogger(ctx) |
获取回放安全日志器 |
workflow.Now(ctx) |
获取确定性当前时间 |
workflow.NewContinueAsNewError(ctx, fn, args...) |
继续为新工作流 |
workflow.SetQueryHandler(ctx, name, fn) |
注册查询处理器 |
workflow.SetUpdateHandler(ctx, name, fn, opts) |
注册更新处理器 |
活动 API (go.temporal.io/sdk/activity)
| API |
用途 |
activity.GetInfo(ctx) |
获取活动元数据(任务令牌等) |
activity.RecordHeartbeat(ctx, details...) |
发送心跳并检查取消 |
activity.HasHeartbeatDetails(ctx) |
检查先前尝试是否留下详情 |
activity.GetHeartbeatDetails(ctx, &out) |
重试后恢复心跳详情 |
activity.ErrResultPending |
返回以异步完成活动 |
客户端 API (go.temporal.io/sdk/client)
| API |
用途 |
client.Dial(options) |
创建 Temporal 客户端 |
c.ExecuteWorkflow(ctx, opts, fn, args...) |
启动工作流 |
c.GetWorkflow(ctx, workflowID, runID) |
获取现有工作流句柄 |
c.CancelWorkflow(ctx, workflowID, runID) |
请求工作流取消 |
c.TerminateWorkflow(ctx, workflowID, runID, reason) |
强制终止 |
c.SignalWorkflow(ctx, workflowID, runID, name, arg) |
发送信号 |
c.QueryWorkflow(ctx, workflowID, runID, name, args...) |
查询工作流状态 |
c.CompleteActivity(ctx, taskToken, result, err) |
异步活动完成 |
run.GetID() |
从运行中获取工作流 ID |
run.Get(ctx, &result) |
阻塞直到工作流完成 |
工作者和测试 API (go.temporal.io/sdk/worker, go.temporal.io/sdk/testsuite)
| API |
用途 |
worker.New(c, taskQueue, opts) |
创建新工作者 |
w.RegisterWorkflow(fn) |
注册工作流函数 |
w.RegisterActivity(fn) |
注册活动函数或结构 |
w.Run(stopCh) |
启动工作者(阻塞直到停止) |
testsuite.WorkflowTestSuite |
嵌入测试结构以创建测试环境 |
env.ExecuteWorkflow(fn, args...) |
在测试环境中运行工作流 |
env.OnActivity(fn, args...).Return(...) |
模拟活动返回值 |
env.RegisterDelayedCallback(d, fn) |
在测试执行期间触发回调 |
worker.NewWorkflowReplayer() |
重放工作流历史以调试 |
架构
应用程序代码
│ 执行工作流 / 信号工作流 / 查询工作流
▼
┌─────────────────────┐
│ Temporal 客户端 │ go.temporal.io/sdk/client
│ (SDK) │
└────────┬────────────┘
│ gRPC
▼
┌─────────────────────┐
│ Temporal 服务器 │ localhost:7233 / Temporal Cloud
│ (服务) │
└────────┬────────────┘
│ 任务队列轮询
▼
┌─────────────────────┐
│ 工作者 │ go.temporal.io/sdk/worker
│ (托管工作流和活动) │
└─────────────────────┘
参考
- 核心应用 — SDK 安装、工作流、活动、工作者、动态注册
- Temporal 客户端 — 客户端创建、云连接(mTLS/API 密钥)、启动工作流
- 命名空间 — 注册、更新、描述、列出、删除命名空间
- 测试套件 — TestWorkflowEnvironment、活动模拟、时间跳过、重放
- 故障检测 — 超时、重试策略、心跳、自定义重试延迟
- 取消 — 工作流/活动取消模式
- 异步活动完成 — 通过任务令牌的外部完成
- UI 元数据 — StaticSummary、SetCurrentDetails、定时器/活动摘要
- 定时器 — 持久化定时器、workflow.Sleep、workflow.NewTimer
- 调试 — 死锁检测、TEMPORAL_DEBUG、重放调试
- 继续为新工作流 — 事件历史管理、状态传递