mcpField
D
dbos-typescript

dbos-typescript

github.com/dbos-inc开发19632 次安装今天更新
代码仓库

关于 dbos-typescript

面向使用 DBOS 持久化工作流构建容错 TypeScript 应用的开发者,提供最佳实践指南。内容涵盖配置、工作流、队列、通信、测试及 DBOS 4.x 升级指导。

主要功能

  1. 01DBOS TypeScript 5.x 指南
  2. 02工作流与步骤设计
  3. 03队列和并发实践
  4. 04工作流通信模式
  5. 05测试与升级指导

适用场景

  1. 01在 TypeScript 应用中引入 DBOS
  2. 02设计持久化工作流与步骤
  3. 03使用队列控制并发
  4. 04升级使用 DBOS 4.x 的项目

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dbos-inc/agent-skills --skill dbos-typescript

安装后在 Claude Code 中输入/dbos-typescript确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

AGENTS.md
references/
_sections.md
advanced-patching.md
advanced-serialization.md
advanced-shared-database.md
advanced-upgrading.md
advanced-versioning.md
client-enqueue.md
client-setup.md
comm-events.md
comm-messages.md
comm-streaming.md
lifecycle-config.md
lifecycle-express.md
pattern-classes.md
pattern-debouncing.md
pattern-idempotency.md
pattern-scheduled.md
pattern-sleep.md
queue-basics.md
queue-concurrency.md
queue-deduplication.md
queue-delay.md
queue-listening.md
queue-management.md
queue-partitioning.md
queue-rate-limiting.md
step-basics.md
step-retries.md
step-timeouts.md

详细介绍

DBOS TypeScript 最佳实践

使用 DBOS 持久化工作流构建可靠、容错的 TypeScript 应用程序指南。适用于 DBOS TypeScript 5.x(@dbos-inc/dbos-sdk)。如果项目使用 4.x,或使用了已移除的 API(new WorkflowQueue、@DBOS.scheduled/DBOS.registerScheduled、partitionQueue、priorityEnabled、@DBOS.requiredRole、基于 dbos-config.yaml 的配置),请参阅 references/advanced-upgrading.md。

适用场景

在以下情况下参考这些准则:

  • 将 DBOS 添加到现有 TypeScript 代码中
  • 创建工作流和步骤
  • 使用队列控制并发
  • 实现工作流通信(事件、消息、流)
  • 配置并启动 DBOS 应用程序
  • 在外部应用程序中使用 DBOSClient
  • 测试 DBOS 应用程序

按优先级划分的规则类别

优先级类别影响前缀
1生命周期CRITICALlifecycle-
2工作流CRITICALworkflow-
3步骤HIGHstep-
4队列HIGHqueue-
5通信MEDIUMcomm-
6模式MEDIUMpattern-
7测试LOW-MEDIUMtest-
8客户端MEDIUMclient-
9高级LOWadvanced-

关键规则

安装

始终安装最新版本的 DBOS:

npm install @dbos-inc/dbos-sdk@latest
DBOS 配置与启动

DBOS 应用程序在运行任何工作流之前,必须配置并启动 DBOS:

import { DBOS } from "@dbos-inc/dbos-sdk";

async function main() {
  DBOS.setConfig({
    name: "my-app",
    applicationVersion: "0.1.0",
    systemDatabaseUrl: process.env.DBOS_SYSTEM_DATABASE_URL,
  });
  await DBOS.launch();
  await myWorkflow();
}

main().catch(console.log);

创建新应用程序时,将 applicationVersion 设为 "0.1.0"。如果省略,DBOS 会根据工作流源代码生成一个不透明的哈希值。编辑现有应用程序时,保留已配置的版本不变——更改版本属于部署决策(参见 references/advanced-versioning.md)。

工作流与步骤结构

工作流由多个步骤组成。任何执行复杂操作或访问外部服务的函数,都必须通过 DBOS.runStep 作为步骤运行:

import { DBOS } from "@dbos-inc/dbos-sdk";

async function fetchData() {
  return await fetch("https://api.example.com").then(r => r.json());
}

async function myWorkflowFn() {
  const result = await DBOS.runStep(fetchData, { name: "fetchData" });
  return result;
}
const myWorkflow = DBOS.registerWorkflow(myWorkflowFn);
关键约束
  • 不要在步骤中调用、启动或排入工作流
  • 不要使用线程或不受控的并发来启动工作流——请使用 DBOS.startWorkflow 或队列
  • 工作流必须具有确定性——非确定性操作应放在步骤中
  • 不要在工作流或步骤中修改全局变量
  • 在 DBOS.launch() 之后注册队列(DBOS.registerQueue)并创建计划任务(DBOS.applySchedules/DBOS.createSchedule)——它们存储在系统数据库中
  • 只有从工作流中调用步骤时,步骤才具有持久性;在工作流之外调用时,它们会作为普通函数调用运行
  • 连接到 DBOS Conductor(conductorKey,或部署到 DBOS Cloud)需要安装与 @dbos-inc/dbos-sdk 次要版本相同的 @dbos-inc/dbos-enterprise

使用方法

阅读各个规则文件,了解详细说明和示例:

references/lifecycle-config.md
references/workflow-determinism.md
references/queue-concurrency.md
references/advanced-upgrading.md
references/advanced-shared-database.md

如果多个应用程序共用一个系统数据库,请始终在 DBOSClient 上设置 applicationName,并参阅 references/advanced-shared-database.md。

参考资料

评论

支持 Markdown