英文:
temporal go client, Client.CheckHealth() example
问题
我是你的中文翻译助手,以下是翻译好的内容:
我对temporal和Go SDK都是新手。Client接口定义了一个CheckHealth方法。我在samples中找不到它的简单示例用法。
我成功执行了该方法,但它没有返回任何内容:
package main
import (
"context"
"log"
"go.temporal.io/sdk/client"
"github.com/temporalio/samples-go/helloworld"
)
func main() {
log.Println("Starting")
// 客户端是一个重量级对象,每个进程只应创建一次。
c, err := client.Dial(client.Options{})
if err != nil {
log.Fatalln("无法创建客户端", err)
}
log.Println("客户端已创建", c)
// 检查客户端健康状态
checkHealthRequest := client.CheckHealthRequest{}
checkHealthResponse, err := c.CheckHealth(context.Background(), &checkHealthRequest)
if err != nil {
log.Fatalln("无法检查健康状态", err)
}
log.Println("checkHealthResponse", checkHealthResponse)
defer c.Close()
workflowOptions := client.StartWorkflowOptions{
ID: "hello_world_workflowID",
TaskQueue: "hello-world",
}
we, err := c.ExecuteWorkflow(context.Background(), workflowOptions, helloworld.Workflow, "Temporal")
if err != nil {
log.Fatalln("无法执行工作流", err)
}
log.Println("已启动工作流", "WorkflowID", we.GetID(), "RunID", we.GetRunID())
// 同步等待工作流完成。
var result string
err = we.Get(context.Background(), &result)
if err != nil {
log.Fatalln("无法获取工作流结果", err)
}
log.Println("工作流结果:", result)
}
返回结果:
gitpod /workspace/samples-go (main) $ go run helloworld/starter/main_matt.go
2022/08/01 03:15:38 Starting
2022/08/01 03:15:38 INFO 未为Temporal客户端配置日志记录器。已创建默认日志记录器。
2022/08/01 03:15:38 客户端已创建 &{0xc0001a8950 0xc0002a7180 default 0xc0002aa3c0 0xc0001a4c18 {} 15492@temporalio-samplesgo-3fes2zok5o7@ 0xc0001fe460 [] [] 0xc0001a8958 0xc00019fc50 0xc0002b6860 {{0 0} 0 0 0 0}}
2022/08/01 03:15:38 checkHealthResponse &{}
2022/08/01 03:15:38 已启动工作流 WorkflowID hello_world_workflowID RunID 80727872-4df5-4fab-b96a-484276748e36
2022/08/01 03:15:38 工作流结果: Hello Temporal!
英文:
I am new to temporal, using the Go SDK. The Client interface defines a CheckHealth method. Where can I find a simple example of its usage? I couldn't find anything inside the samples.
I got the method to execute, but it returns nothing:
package main
import (
"context"
"log"
"go.temporal.io/sdk/client"
"github.com/temporalio/samples-go/helloworld"
)
func main() {
log.Println("Starting")
// The client is a heavyweight object that should be created once per process.
c, err := client.Dial(client.Options{})
if err != nil {
log.Fatalln("Unable to create client", err)
}
log.Println("Client created", c)
// Check client health
checkHealthRequest := client.CheckHealthRequest{
}
checkHealthResponse, err := c.CheckHealth(context.Background(), &checkHealthRequest)
if err != nil {
log.Fatalln("Unable to check health", err)
}
log.Println("checkHealthResponse", checkHealthResponse)
defer c.Close()
workflowOptions := client.StartWorkflowOptions{
ID: "hello_world_workflowID",
TaskQueue: "hello-world",
}
we, err := c.ExecuteWorkflow(context.Background(), workflowOptions, helloworld.Workflow, "Temporal")
if err != nil {
log.Fatalln("Unable to execute workflow", err)
}
log.Println("Started workflow", "WorkflowID", we.GetID(), "RunID", we.GetRunID())
// Synchronously wait for the workflow completion.
var result string
err = we.Get(context.Background(), &result)
if err != nil {
log.Fatalln("Unable get workflow result", err)
}
log.Println("Workflow result:", result)
}
Returns:
gitpod /workspace/samples-go (main) $ go run helloworld/starter/main_matt.go
2022/08/01 03:15:38 Starting
2022/08/01 03:15:38 INFO No logger configured for temporal client. Created default one.
2022/08/01 03:15:38 Client created &{0xc0001a8950 0xc0002a7180 default 0xc0002aa3c0 0xc0001a4c18 {} 15492@temporalio-samplesgo-3fes2zok5o7@ 0xc0001fe460 [] [] 0xc0001a8958 0xc00019fc50 0xc0002b6860 {{0 0} 0 0 0 0}}
2022/08/01 03:15:38 checkHealthResponse &{}
2022/08/01 03:15:38 Started workflow WorkflowID hello_world_workflowID RunID 80727872-4df5-4fab-b96a-484276748e36
2022/08/01 03:15:38 Workflow result: Hello Temporal!
答案1
得分: 1
根据Cerise Limón的评论提供的答案:
package main
import (
"context"
"log"
"go.temporal.io/sdk/client"
"github.com/temporalio/samples-go/helloworld"
)
func main() {
log.Println("Starting")
// 创建一个客户端对象,这是一个重量级对象,每个进程只需要创建一次
c, err := client.Dial(client.Options{})
if err != nil {
log.Fatalln("无法创建客户端", err)
}
log.Println("客户端已创建", c)
// 检查客户端的健康状态
// 文档中说:“如果检查失败,将返回一个错误”。如果 err == nil,则表示健康状态良好。
if _, err := c.CheckHealth(context.Background(), &client.CheckHealthRequest{}); err != nil {
/* 健康状态不好 */
log.Println("健康状态不好")
} else {
/* 健康状态良好 */
log.Println("健康状态良好")
}
defer c.Close()
workflowOptions := client.StartWorkflowOptions{
ID: "hello_world_workflowID",
TaskQueue: "hello-world",
}
we, err := c.ExecuteWorkflow(context.Background(), workflowOptions, helloworld.Workflow, "Temporal")
if err != nil {
log.Fatalln("无法执行工作流", err)
}
log.Println("已启动工作流", "WorkflowID", we.GetID(), "RunID", we.GetRunID())
// 同步等待工作流完成
var result string
err = we.Get(context.Background(), &result)
if err != nil {
log.Fatalln("无法获取工作流结果", err)
}
log.Println("工作流结果:", result)
}
gitpod /workspace/samples-go (main) $ go run helloworld/starter/main_matt.go
2022/08/01 03:30:29 Starting
2022/08/01 03:30:29 INFO No logger configured for temporal client. Created default one.
2022/08/01 03:30:29 客户端已创建 &{0xc00012e950 0xc000231180 default 0xc0002323c0 0xc00012ac18 {} 18770@temporalio-samplesgo-3fes2zok5o7@ 0xc00017e460 [] [] 0xc00012e958 0xc000125c50 0xc000038748 {{0 0} 0 0 0 0}}
2022/08/01 03:30:29 健康状态良好
2022/08/01 03:30:29 已启动工作流 WorkflowID hello_world_workflowID RunID 03cfd328-77c1-4d7a-9d5e-86d82e44c034
2022/08/01 03:30:29 工作流结果: Hello Temporal!
英文:
Answer based on comments from Cerise Limón above
package main
import (
"context"
"log"
"go.temporal.io/sdk/client"
"github.com/temporalio/samples-go/helloworld"
)
func main() {
log.Println("Starting")
// The client is a heavyweight object that should be created once per process.
c, err := client.Dial(client.Options{})
if err != nil {
log.Fatalln("Unable to create client", err)
}
log.Println("Client created", c)
// Check client health
// The documentation says "If the check fails, an error is returned." The health is good if err == nil.
if _, err := c.CheckHealth(context.Background(), &client.CheckHealthRequest{}); err != nil {
/* health is bad */
log.Println("Health is bad")
} else {
/* health is good */
log.Println("Health is good")
}
defer c.Close()
workflowOptions := client.StartWorkflowOptions{
ID: "hello_world_workflowID",
TaskQueue: "hello-world",
}
we, err := c.ExecuteWorkflow(context.Background(), workflowOptions, helloworld.Workflow, "Temporal")
if err != nil {
log.Fatalln("Unable to execute workflow", err)
}
log.Println("Started workflow", "WorkflowID", we.GetID(), "RunID", we.GetRunID())
// Synchronously wait for the workflow completion.
var result string
err = we.Get(context.Background(), &result)
if err != nil {
log.Fatalln("Unable get workflow result", err)
}
log.Println("Workflow result:", result)
}
gitpod /workspace/samples-go (main) $ go run helloworld/starter/main_matt.go
2022/08/01 03:30:29 Starting
2022/08/01 03:30:29 INFO No logger configured for temporal client. Created default one.
2022/08/01 03:30:29 Client created &{0xc00012e950 0xc000231180 default 0xc0002323c0 0xc00012ac18 {} 18770@temporalio-samplesgo-3fes2zok5o7@ 0xc00017e460 [] [] 0xc00012e958 0xc000125c50 0xc000038748 {{0 0} 0 0 0 0}}
2022/08/01 03:30:29 Health is good
2022/08/01 03:30:29 Started workflow WorkflowID hello_world_workflowID RunID 03cfd328-77c1-4d7a-9d5e-86d82e44c034
2022/08/01 03:30:29 Workflow result: Hello Temporal!
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论