package main import ( "log/slog" "os" "github.com/lab/automation-jobs-core/temporal/activities" "github.com/lab/automation-jobs-core/temporal/workflows" "go.temporal.io/sdk/client" "go.temporal.io/sdk/worker" ) const ( SampleTaskQueue = "sample-task-queue" ) func main() { // Use slog for structured logging. slog.SetDefault(slog.New(slog.NewJSONHandler(os.Stdout, nil))) // Get Temporal server address from environment variable. temporalAddress := os.Getenv("TEMPORAL_ADDRESS") if temporalAddress == "" { slog.Warn("TEMPORAL_ADDRESS not set, defaulting to localhost:7233") temporalAddress = "localhost:7233" } // Create a new Temporal client. c, err := client.Dial(client.Options{ HostPort: temporalAddress, Logger: slog.Default(), }) if err != nil { slog.Error("Unable to create Temporal client", "error", err) os.Exit(1) } defer c.Close() // Create a new worker. w := worker.New(c, SampleTaskQueue, worker.Options{}) // Register the workflow and activity. w.RegisterWorkflow(workflows.SampleWorkflow) w.RegisterActivity(activities.SampleActivity) slog.Info("Starting Temporal worker", "task_queue", SampleTaskQueue) // Start the worker. err = w.Run(worker.InterruptCh()) if err != nil { slog.Error("Unable to start worker", "error", err) os.Exit(1) } }