#workflow #temporal #sdk #language #base #run #protobuf

temporal-sdk-core

构建新的 Temporal SDK 的库

1 个不稳定版本

0.1.0-alpha.12021 年 4 月 22 日

#1510 in 开发工具

自定义许可协议

380KB
8K SLoC

Build status

作为所有其他 Temporal SDK 基础的核心 SDK。

入门

查看 架构 文档以获取一些高级信息。

此仓库使用子模块来存储上游 protobuf 文件。路径 protos/api_upstream 是一个子模块 -- 当第一次检出仓库时,请确保您已运行 git submodule update --init --recursive。 TODO: Makefile。

依赖项

  • Protobuf 编译器

开发

以下所有命令在每个拉取请求中都强制执行。

构建和测试

您可以使用 cargo 构建 和 测试 项目:cargo build cargo test

格式化

要格式化所有代码,请运行:cargo fmt --all

代码检查

我们使用 clippy 进行代码检查。您可以使用以下命令运行它:cargo clippy --all -- -D warnings

调试

该包使用 tracing 来帮助调试。为了在测试中启用它,请将以下片段插入测试的开始处。默认情况下,跟踪数据以(相当)美观的方式输出到 stdout,如果存在 Jaeger 实例,则输出到 Jaeger 实例。

core_tracing::tracing_init();
let s = info_span!("Test start");
let _enter = s.enter();

运行Jaeger实例:docker run --rm -p6831:6831/udp -p6832:6832/udp -p16686:16686 jaegertracing/all-in-one:latest Jaeger收集默认关闭,您必须在环境中设置 TEMPORAL_ENABLE_OPENTELEMENTRY=true 以启用它。

要在控制台显示日志,请设置环境变量 RUST_LOGtemporal_sdk_core=DEBUG 或您需要的任何级别。环境变量根据跟踪的 EnvFilter 规则进行解析。

如果您正在开发语言SDK,则期望您在 main 等价的代码中尽早初始化跟踪。

样式指南

错误处理

从公共接口返回的任何错误都应该是良好类型化的,我们为此使用 thiserror

仅用于测试的项返回的错误可以自由使用 anyhow 以减少冗余。

依赖项

~12–21MB
~283K SLoC