Skip to content

Commit deaec95

Browse files
author
“Kevin”
committed
Create batch sample entry point
1 parent ba1c684 commit deaec95

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed

cmd/samples/batch/main.go

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package main
2+
3+
import (
4+
"flag"
5+
"time"
6+
7+
"github.com/pborman/uuid"
8+
"go.uber.org/cadence/client"
9+
"go.uber.org/cadence/worker"
10+
11+
"github.com/uber-common/cadence-samples/cmd/samples/common"
12+
)
13+
14+
// This needs to be done as part of a bootstrap step when the process starts.
15+
// The workers are supposed to be long running.
16+
func startWorkers(h *common.SampleHelper) {
17+
// Configure worker options.
18+
workerOptions := worker.Options{
19+
MetricsScope: h.WorkerMetricScope,
20+
Logger: h.Logger,
21+
FeatureFlags: client.FeatureFlags{
22+
WorkflowExecutionAlreadyCompletedErrorEnabled: true,
23+
},
24+
}
25+
h.StartWorkers(h.Config.DomainName, ApplicationName, workerOptions)
26+
}
27+
28+
func startWorkflow(h *common.SampleHelper) {
29+
workflowOptions := client.StartWorkflowOptions{
30+
ID: "batch_" + uuid.New(),
31+
TaskList: ApplicationName,
32+
ExecutionStartToCloseTimeout: time.Minute * 5,
33+
DecisionTaskStartToCloseTimeout: time.Minute * 5,
34+
}
35+
36+
// Default batch configuration
37+
input := BatchWorkflowInput{
38+
Concurrency: 2,
39+
TotalSize: 10,
40+
}
41+
42+
h.StartWorkflow(workflowOptions, batchWorkflowName, input)
43+
}
44+
45+
func registerWorkflowAndActivity(
46+
h *common.SampleHelper,
47+
) {
48+
h.RegisterWorkflowWithAlias(BatchWorkflow, batchWorkflowName)
49+
h.RegisterActivity(BatchActivity)
50+
}
51+
52+
func main() {
53+
var mode string
54+
flag.StringVar(&mode, "m", "trigger", "Mode is worker or trigger.")
55+
flag.Parse()
56+
57+
var h common.SampleHelper
58+
h.SetupServiceConfig()
59+
60+
switch mode {
61+
case "worker":
62+
registerWorkflowAndActivity(&h)
63+
startWorkers(&h)
64+
65+
// The workers are supposed to be long running process that should not exit.
66+
// Use select{} to block indefinitely for samples, you can quit by CMD+C.
67+
select {}
68+
case "trigger":
69+
startWorkflow(&h)
70+
}
71+
}

0 commit comments

Comments
 (0)