Files
homelab-frontend/cmd/worker/main.go
T
Story Crater Bot b6767e247c
Build / Build and push image (push) Failing after 12s
CI / Test, vet, build (push) Successful in 2m18s
fix(deps,ci): update module path to forgejo.riotpiao.com/rock/homelab-frontend, switch to GITHUB_TOKEN
2026-08-21 20:46:45 -07:00

64 lines
1.6 KiB
Go

package main
import (
"flag"
"log"
"os"
"os/signal"
"syscall"
"go.temporal.io/sdk/client"
"go.temporal.io/sdk/worker"
"forgejo.riotpiao.com/rock/homelab-frontend/internal/workflow"
)
func main() {
hostPort := flag.String("host", "temporal.temporal:7233", "Temporal server host:port")
namespace := flag.String("namespace", "production", "Temporal namespace")
taskQueue := flag.String("queue", "worker-production", "Task queue")
flag.Parse()
// Connect to Temporal server
c, err := client.Dial(client.Options{
HostPort: *hostPort,
Namespace: *namespace,
})
if err != nil {
log.Fatalf("Failed to connect to Temporal: %v", err)
}
defer c.Close()
log.Printf("Connected to Temporal at %s (namespace: %s)", *hostPort, *namespace)
// Create worker
w := worker.New(c, *taskQueue, worker.Options{})
// Register workflows
w.RegisterWorkflow(workflow.HelloWorldWorkflow)
w.RegisterWorkflow(workflow.GreeterWorkflow)
w.RegisterWorkflow(workflow.ProcessOrderWorkflow)
// Register activities
w.RegisterActivity(workflow.GreetActivity)
w.RegisterActivity(workflow.ValidateOrderActivity)
w.RegisterActivity(workflow.ProcessPaymentActivity)
w.RegisterActivity(workflow.NotifyCustomerActivity)
log.Printf("Starting worker on task queue: %s", *taskQueue)
// Handle graceful shutdown
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
go func() {
<-sigChan
log.Println("Shutting down worker...")
w.Stop()
}()
// Run worker (blocks)
if err := w.Run(worker.InterruptCh()); err != nil {
log.Fatalf("Worker error: %v", err)
}
}