Hello World 教程
在 5 分钟内创建并运行您的第一个 Temporal 工作流。
开始之前
确保您已完成 Temporal 的安装,并且本地 Temporal Server 正在运行(端口 7233)。
第一步:创建工作流
工作流定义了整个业务流程。让我们创建一个简单的工作流,返回 "Hello World!" 消息。
HelloWorldWorkflow.javaJava
package io.temporal.sample;
import io.temporal.workflow.WorkflowInterface;
import io.temporal.workflow.WorkflowMethod;
@WorkflowInterface
public interface HelloWorldWorkflow {
@WorkflowMethod
String execute(String name);
}
public class HelloWorldWorkflowImpl implements HelloWorldWorkflow {
@Override
public String execute(String name) {
return "Hello, " + name + "!";
}
}第二步:创建 Worker
Worker 负责执行工作流代码。让我们创建一个 Worker 来运行我们的工作流。
WorkerMain.javaJava
package io.temporal.sample;
import io.temporal.client.WorkflowClient;
import io.temporal.client.WorkflowClientOptions;
import io.temporal.serviceclient.WorkflowServiceStubs;
import io.temporal.serviceclient.WorkflowServiceStubsOptions;
import io.temporal.worker.Worker;
import io.temporal.worker.WorkerFactory;
public class WorkerMain {
public static void main(String[] args) {
// 创建客户端连接
WorkflowServiceStubs service = WorkflowServiceStubs.newInstance(
WorkflowServiceStubsOptions.newBuilder()
.setTarget("localhost:7233")
.build()
);
WorkflowClient client = WorkflowClient.newInstance(
service,
WorkflowClientOptions.newBuilder().build()
);
// 创建 Worker 工厂
WorkerFactory factory = WorkerFactory.newInstance(client);
// 创建 Worker
Worker worker = factory.newWorker("hello-world-task-queue");
// 注册工作流实现
worker.registerWorkflowImplementationTypes(
HelloWorldWorkflowImpl.class
);
// 启动 Worker
factory.start();
System.out.println("Worker started. Press Ctrl+C to exit.");
}
}第三步:启动工作流
创建一个客户端程序来启动工作流执行。
StarterMain.javaJava
package io.temporal.sample;
import io.temporal.client.WorkflowClient;
import io.temporal.client.WorkflowOptions;
import io.temporal.serviceclient.WorkflowServiceStubs;
import io.temporal.serviceclient.WorkflowServiceStubsOptions;
import io.temporal.workflow.WorkflowExecution;
public class StarterMain {
public static void main(String[] args) {
// 创建客户端连接
WorkflowServiceStubs service = WorkflowServiceStubs.newInstance(
WorkflowServiceStubsOptions.newBuilder()
.setTarget("localhost:7233")
.build()
);
WorkflowClient client = WorkflowClient.newInstance(service);
// 配置工作流选项
WorkflowOptions options = WorkflowOptions.newBuilder()
.setTaskQueue("hello-world-task-queue")
.setWorkflowId("hello-world-workflow-id")
.build();
// 获取工作流存根
HelloWorldWorkflow workflow = client.newWorkflowStub(
HelloWorldWorkflow.class,
options
);
// 执行工作流
String result = workflow.execute("World");
System.out.println("Workflow result: " + result);
System.exit(0);
}
}运行程序
1. 启动 Worker(终端 1)
Terminal
java -cp temporal-sdk.jar WorkerMain2. 启动工作流(终端 2)
Terminal
java -cp temporal-sdk.jar StarterMain查看结果
Workflow result: Hello, World!
在 Web UI 中查看
打开浏览器访问 Temporal Web UI,您可以看到工作流的执行历史和事件。
访问 http://localhost:8233
点击工作流 ID "hello-world-workflow-id" 查看详细的执行历史。
核心概念总结
工作流接口
使用 @WorkflowInterface 注解定义工作流接口
Worker 配置
使用 WorkerFactory 创建 Worker,通过 registerWorkflowImplementationTypes() 注册
客户端调用
使用 newWorkflowStub() 获取工作流存根,调用 execute() 启动
下一步
恭喜!您已经成功运行了第一个 Temporal 工作流。接下来学习更多核心概念: