Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
115 changes: 57 additions & 58 deletions docs/01-get-started/03-golang-hello-world.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,17 @@ go mod init <your-go-module>
package main

import (
"net/http"
"go.uber.org/cadence/.gen/go/cadence/workflowserviceclient"
"go.uber.org/cadence/compatibility"
"go.uber.org/cadence/worker"

apiv1 "github.com/uber/cadence-idl/go/proto/api/v1"
"github.com/uber-go/tally"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"go.uber.org/yarpc"
"go.uber.org/yarpc/transport/grpc"
"net/http"
"go.uber.org/cadence/.gen/go/cadence/workflowserviceclient"
"go.uber.org/cadence/compatibility"
"go.uber.org/cadence/worker"

apiv1 "github.com/uber/cadence-idl/go/proto/api/v1"
"github.com/uber-go/tally"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"go.uber.org/yarpc"
"go.uber.org/yarpc/transport/grpc"
)

var HostPort = "127.0.0.1:7833"
Expand All @@ -50,70 +50,70 @@ var ClientName = "test-worker"
var CadenceService = "cadence-frontend"

func main() {
startWorker(buildLogger(), buildCadenceClient())
err := http.ListenAndServe(":8080", nil)
if err != nil {
panic(err)
}
startWorker(buildLogger(), buildCadenceClient())
err := http.ListenAndServe(":8080", nil)
if err != nil {
panic(err)
}
}

func buildLogger() *zap.Logger {
config := zap.NewDevelopmentConfig()
config.Level.SetLevel(zapcore.InfoLevel)
config := zap.NewDevelopmentConfig()
config.Level.SetLevel(zapcore.InfoLevel)

var err error
logger, err := config.Build()
if err != nil {
panic("Failed to setup logger")
}
var err error
logger, err := config.Build()
if err != nil {
panic("Failed to setup logger")
}

return logger
return logger
}

func buildCadenceClient() workflowserviceclient.Interface {
dispatcher := yarpc.NewDispatcher(yarpc.Config{
dispatcher := yarpc.NewDispatcher(yarpc.Config{
Name: ClientName,
Outbounds: yarpc.Outbounds{
CadenceService: {Unary: grpc.NewTransport().NewSingleOutbound(HostPort)},
CadenceService: {Unary: grpc.NewTransport().NewSingleOutbound(HostPort)},
},
})
if err := dispatcher.Start(); err != nil {
})
if err := dispatcher.Start(); err != nil {
panic("Failed to start dispatcher")
}
}

clientConfig := dispatcher.ClientConfig(CadenceService)
clientConfig := dispatcher.ClientConfig(CadenceService)

return compatibility.NewThrift2ProtoAdapter(
return compatibility.NewThrift2ProtoAdapter(
apiv1.NewDomainAPIYARPCClient(clientConfig),
apiv1.NewWorkflowAPIYARPCClient(clientConfig),
apiv1.NewWorkerAPIYARPCClient(clientConfig),
apiv1.NewVisibilityAPIYARPCClient(clientConfig),
)
)
}

func startWorker(logger *zap.Logger, service workflowserviceclient.Interface) {
// TaskListName identifies set of client workflows, activities, and workers.
// It could be your group or client or application name.
workerOptions := worker.Options{
Logger: logger,
MetricsScope: tally.NewTestScope(TaskListName, map[string]string{}),
}

worker, err := worker.NewV2(
service,
Domain,
TaskListName,
workerOptions)
if err != nil {
panic("Failed to initalize worker")
}

err := worker.Start()
if err != nil {
panic("Failed to start worker")
}

logger.Info("Started Worker.", zap.String("worker", TaskListName))
// TaskListName identifies set of client workflows, activities, and workers.
// It could be your group or client or application name.
workerOptions := worker.Options{
Logger: logger,
MetricsScope: tally.NewTestScope(TaskListName, map[string]string{}),
}

worker, err := worker.NewV2(
service,
Domain,
TaskListName,
workerOptions)
if err != nil {
panic("Failed to initialize worker")
}

err = worker.Start()
if err != nil {
panic("Failed to start worker")
}

logger.Info("Started Worker.", zap.String("worker", TaskListName))
}
```

Expand Down Expand Up @@ -174,10 +174,9 @@ func helloWorldActivity(ctx context.Context, name string) (string, error) {
Don't forget to register the workflow and activity to the worker.

```go
func init() {
workflow.Register(helloWorldWorkflow)
activity.Register(helloWorldActivity)
}
// add the following lines to the function startWorker before calling worker.Start()
worker.RegisterWorkflow(helloWorldWorkflow)
worker.RegisterActivity(helloWorldActivity)
```

Import the missing modules if they were not automatically added.
Expand Down