| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- package myservce
-
- import (
- "fmt"
- "log"
- "time"
-
- "git.x2erp.com/qdy/go-base/config"
- "github.com/go-micro/plugins/v4/registry/consul"
- "go-micro.dev/v4/registry"
- "go-micro.dev/v4/web"
- )
-
- // StartWithRegistry starts microservice with registry (e.g., Consul)
- func StartWithRegistry(cfg config.IConfig) web.Service {
- // Get service information from config
- serviceConfig := cfg.GetService()
- microConfig := cfg.GetMicro()
-
- // 1. Create Consul registry
- consulRegistry := consul.NewRegistry(
- registry.Addrs(microConfig.RegistryAddress),
- )
-
- // 2. Create HTTP web service (for external HTTP access)
- service := web.NewService(
- web.Name(serviceConfig.ServiceName),
- web.Version(serviceConfig.ServiceVersion),
- web.Address(fmt.Sprintf(":%d", serviceConfig.Port)),
- web.Registry(consulRegistry),
- web.RegisterTTL(30*time.Second), // Health check interval
- web.RegisterInterval(20*time.Second), // Registration interval
- )
-
- // 3. Initialize service
- service.Init()
-
- log.Printf("Microservice started (with registry)")
- log.Printf(" • Service name: %s", serviceConfig.ServiceName)
- log.Printf(" • Version: %s", serviceConfig.ServiceVersion)
- log.Printf(" • Port: %d", serviceConfig.Port)
- log.Printf(" • Registry: %s", microConfig.RegistryAddress)
-
- // Run in background
- go func() {
- if err := service.Run(); err != nil {
- log.Printf("Microservice stopped: %v", err)
- }
- }()
-
- return service
- }
-
- // StartStandalone starts standalone microservice (not registered to registry)
- func StartStandalone(cfg config.IConfig) web.Service {
- // Get service information from config
- serviceConfig := cfg.GetService()
-
- // Create HTTP web service (standalone operation)
- service := web.NewService(
- web.Name(serviceConfig.ServiceName),
- web.Version(serviceConfig.ServiceVersion),
- web.Address(fmt.Sprintf(":%d", serviceConfig.Port)),
- // No Registry specified = standalone service
- )
-
- // Initialize service
- service.Init()
-
- log.Printf("Standalone microservice started")
- log.Printf(" • Service name: %s", serviceConfig.ServiceName)
- log.Printf(" • Version: %s", serviceConfig.ServiceVersion)
- log.Printf(" • Port: %d", serviceConfig.Port)
- log.Printf(" • Mode: Standalone (no service discovery)")
-
- // Run in background
- go func() {
- if err := service.Run(); err != nil {
- log.Printf("Microservice stopped: %v", err)
- }
- }()
-
- return service
- }
-
- // Start maintains compatibility with original interface, uses registry version by default
- func Start(cfg config.IConfig) web.Service {
- return StartWithRegistry(cfg)
- }
|