Temporal 开源项目使用教程
1. 项目的目录结构及介绍
Temporal 项目的目录结构如下:
awesome-temporal/
├── README.md
├── LICENSE
├── CONTRIBUTING.md
├── docs/
│ ├── go/
│ ├── java/
│ ├── javascript/
│ ├── node/
│ ├── python/
│ ├── php/
│ ├── net/
│ ├── ruby/
│ ├── rust/
│ └── ...
├── samples/
│ ├── go/
│ ├── java/
│ ├── javascript/
│ ├── node/
│ ├── python/
│ ├── php/
│ ├── net/
│ ├── ruby/
│ └── ...
├── libraries/
│ ├── go/
│ ├── java/
│ ├── javascript/
│ ├── node/
│ ├── python/
│ ├── php/
│ ├── net/
│ ├── ruby/
│ └── ...
├── tools/
│ ├── go/
│ ├── java/
│ ├── javascript/
│ ├── node/
│ ├── python/
│ ├── php/
│ ├── net/
│ ├── ruby/
│ └── ...
├── frameworks/
│ ├── go/
│ ├── java/
│ ├── javascript/
│ ├── node/
│ ├── python/
│ ├── php/
│ ├── net/
│ ├── ruby/
│ └── ...
└── ...
目录结构介绍
README.md
: 项目介绍文件。LICENSE
: 项目许可证文件。CONTRIBUTING.md
: 贡献指南文件。docs/
: 文档目录,包含各种语言的文档。samples/
: 示例代码目录,包含各种语言的示例代码。libraries/
: 库目录,包含各种语言的库。tools/
: 工具目录,包含各种语言的工具。frameworks/
: 框架目录,包含各种语言的框架。
2. 项目的启动文件介绍
Temporal 项目的启动文件因语言而异,以下是一些常见语言的启动文件示例:
Go 语言
在 samples/go/
目录下,通常会有一个 main.go
文件作为启动文件。
package main
import (
"log"
"go.temporal.io/sdk/client"
"go.temporal.io/sdk/worker"
)
func main() {
// 创建 Temporal 客户端
c, err := client.NewClient(client.Options{})
if err != nil {
log.Fatalln("无法创建客户端", err)
}
defer c.Close()
// 创建 Worker
w := worker.New(c, "your-task-queue", worker.Options{})
// 注册工作流和活动
w.RegisterWorkflow(YourWorkflow)
w.RegisterActivity(YourActivity)
// 启动 Worker
err = w.Run(worker.InterruptCh())
if err != nil {
log.Fatalln("Worker 启动失败", err)
}
}
Java 语言
在 samples/java/
目录下,通常会有一个 Main.java
文件作为启动文件。
import io.temporal.client.WorkflowClient;
import io.temporal.serviceclient.WorkflowServiceStubs;
import io.temporal.worker.Worker;
import io.temporal.worker.WorkerFactory;
public class Main {
public static void main(String[] args) {
// 创建 Temporal 服务存根
WorkflowServiceStubs service = WorkflowServiceStubs.newInstance();
// 创建 Temporal 客户端
WorkflowClient client = WorkflowClient.newInstance(service);
// 创建 Worker 工厂
WorkerFactory factory = WorkerFactory.newInstance(client);
// 创建 Worker
Worker worker = factory.newWorker("your-task-queue");
// 注册工作流和活动
worker.registerWorkflowImplementationTypes(YourWorkflow.class);
worker.registerActivitiesImplementations(new YourActivity());
// 启动 Worker
factory.start();
}
}
3. 项目的配置文件介绍
Temporal 项目的配置文件