dbos_golang
Guide for building reliable, fault-tolerant Go applications with DBOS durable workflows. Use when adding DBOS to existing Go code, creating workflows and steps, or using queues for concurrency control.
- License 许可
- MIT
- 最近更新
- 2026-09-30
- Stars
- ★ 9
- Forks
- 0
01 前言 Front Matter
- name
- dbos_golang
- risk
- safe
- source
- https://docs.dbos.dev/
- date_added
- 2026-02-27
- description
- Guide for building reliable, fault-tolerant Go applications with DBOS durable workflows. Use when adding DBOS to existing Go code, creating workflows and steps, or using queues for concurrency control.
02 资源文件 35
- 参考文档_DIR_IDENTITY.md144 B
- 参考文档agents_1.md2.6 KB
- 参考文档claude_1.md2.6 KB
- 参考文档README.md457 B
- 参考文档references/advanced_patching.md2.8 KB
- 参考文档references/advanced_versioning.md1.8 KB
- 参考文档references/client_enqueue.md2.0 KB
- 参考文档references/client_setup.md1.9 KB
- 参考文档references/comm_events.md2.2 KB
- 参考文档references/comm_messages.md1.9 KB
- 参考文档references/comm_streaming.md2.3 KB
- 参考文档references/lifecycle_config.md2.0 KB
- 参考文档references/pattern_debouncing.md1.7 KB
- 参考文档references/pattern_idempotency.md1.9 KB
- 参考文档references/pattern_scheduled.md2.0 KB
- 参考文档references/pattern_sleep.md1.4 KB
- 参考文档references/queue_basics.md1.4 KB
- 参考文档references/queue_concurrency.md1.4 KB
- 参考文档references/queue_deduplication.md1.6 KB
- 参考文档references/queue_listening.md1.3 KB
- 参考文档references/queue_partitioning.md1.3 KB
- 参考文档references/queue_priority.md1.2 KB
- 参考文档references/queue_rate_limiting.md1.2 KB
- 参考文档references/sections.md1.4 KB
- 参考文档references/step_basics.md2.3 KB
- 参考文档references/step_concurrency.md2.4 KB
- 参考文档references/step_retries.md2.0 KB
- 参考文档references/test_setup.md2.3 KB
- 参考文档references/workflow_background.md1.6 KB
- 参考文档references/workflow_constraints.md2.0 KB
- 参考文档references/workflow_control.md1.7 KB
- 参考文档references/workflow_determinism.md1.5 KB
- 参考文档references/workflow_introspection.md1.8 KB
- 参考文档references/workflow_timeout.md1.3 KB
- 参考文档schema.json435 B
03 SKILL.md 正文
DBOS Go Best Practices
Guide for building reliable, fault-tolerant Go applications with DBOS durable workflows.
When to Use
Reference these guidelines when:
- Adding DBOS to existing Go code
- Creating workflows and steps
- Using queues for concurrency control
- Implementing workflow communication (events, messages, streams)
- Configuring and launching DBOS applications
- Using the DBOS Client from external applications
- Testing DBOS applications
Rule Categories by Priority
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Lifecycle | CRITICAL | lifecycle- |
| 2 | Workflow | CRITICAL | workflow- |
| 3 | Step | HIGH | step- |
| 4 | Queue | HIGH | queue- |
| 5 | Communication | MEDIUM | comm- |
| 6 | Pattern | MEDIUM | pattern- |
| 7 | Testing | LOW-MEDIUM | test- |
| 8 | Client | MEDIUM | client- |
| 9 | Advanced | LOW | advanced- |
Critical Rules
Installation
Install the DBOS Go module:
go get github.com/dbos-inc/dbos-transact-golang/dbos@latest
DBOS Configuration and Launch
A DBOS application MUST create a context, register workflows, and launch before running any workflows:
package main
import (
"context"
"log"
"os"
"time"
"github.com/dbos-inc/dbos-transact-golang/dbos"
)
func main() {
ctx, err := dbos.NewDBOSContext(context.Background(), dbos.Config{
AppName: "my-app",
DatabaseURL: os.Getenv("DBOS_SYSTEM_DATABASE_URL"),
})
if err != nil {
log.Fatal(err)
}
defer dbos.Shutdown(ctx, 30*time.Second)
dbos.RegisterWorkflow(ctx, myWorkflow)
if err := dbos.Launch(ctx); err != nil {
log.Fatal(err)
}
}
Workflow and Step Structure
Workflows are comprised of steps. Any function performing complex operations or accessing external services must be run as a step using dbos.RunAsStep:
func fetchData(ctx context.Context) (string, error) {
resp, err := http.Get("https://api.example.com/data")
if err != nil {
return "", err
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
return string(body), nil
}
func myWorkflow(ctx dbos.DBOSContext, input string) (string, error) {
result, err := dbos.RunAsStep(ctx, fetchData, dbos.WithStepName("fetchData"))
if err != nil {
return "", err
}
return result, nil
}
Key Constraints
- Do NOT start or enqueue workflows from within steps
- Do NOT use uncontrolled goroutines to start workflows - use
dbos.RunWorkflowwith queues ordbos.Go/dbos.Selectfor concurrent steps - Workflows MUST be deterministic - non-deterministic operations go in steps
- Do NOT modify global variables from workflows or steps
- All workflows and queues MUST be registered before calling
Launch()
How to Use
Read individual rule files for detailed explanations and examples:
references/lifecycle-config.md
references/workflow-determinism.md
references/queue-concurrency.md
References
04 同仓库更多 Skills
UI-UX Pro Max
Advanced UI/UX analysis and generation skills with data-driven patterns. Python scripts (core.py, search.py) for systematic UI pattern extraction, design system generation, and component search from curated data sources.
shadcn-ui
Expert guidance for integrating and building applications with shadcn/ui components, including component discovery, installation, customization, and best practices.
zustand_store_ts
Create Zustand stores with TypeScript, subscribeWithSelector middleware, and proper state/action separation. Use when building React state management, creating global stores, or implementing reactive state patterns with Zustand.
zustand
Zustand state management guide. Use when working with store code (src/store/**), implementing actions, managing state, or creating slices. Triggers on Zustand store development, state management questions, or action implementation.
youtube_summarizer
Automatically fetch YouTube video transcripts, generate structured summaries, and send full transcripts to messaging platforms. Detects YouTube URLs and provides metadata, key insights, and downloadable transcripts.
youtube_clipper
YouTube 视频智能剪辑工具。下载视频和字幕,AI 分析生成精细章节(几分钟级别), 用户选择片段后自动剪辑、翻译字幕为中英双语、烧录字幕到视频,并生成总结文案。 使用场景:当用户需要剪辑 YouTube 视频、生成短视频片段、制作双语字幕版本时。 关键词:视频剪辑、YouTube、字幕翻译、双语字幕、视频下载、clip video