feat app 模块化启动

This commit is contained in:
2025-12-13 18:22:35 +08:00
parent 71d4e593c7
commit bc656247c9
41 changed files with 730 additions and 253 deletions

View File

@@ -1,63 +1,58 @@
package app
import (
"common/db/etcd"
"common/discover"
"common/log"
"common/net/grpc/service"
"fmt"
"github.com/judwhite/go-svc"
"runtime/debug"
"scene/config"
"scene/grpc_server/server"
"sync"
)
type Program struct {
wg *sync.WaitGroup
server service.IService // grpc服务
stop chan bool
moduleList []Module // 模块列表
}
type Module interface {
Init() error
Start() error
Stop() error
}
func (p *Program) Init(_ svc.Environment) error {
if err := p.initBase(); err != nil {
return err
}
cfg := config.Get()
log.Infof(fmt.Sprintf("%v starting...", cfg.App.Name))
if err := p.initDB(cfg); err != nil {
return err
p.moduleList = append(p.moduleList, &ModuleBase{})
p.moduleList = append(p.moduleList, &ModuleDB{})
p.moduleList = append(p.moduleList, &ModuleGrpcServer{})
for _, module := range p.moduleList {
if err := module.Init(); err != nil {
return err
}
}
log.Infof(fmt.Sprintf("%v Init successful...", config.Get().App.Name))
return nil
}
func (p *Program) Start() error {
defer func() {
if err := recover(); err != nil {
fmt.Printf("Start err: %v", err)
debug.PrintStack()
_ = p.Stop()
for _, module := range p.moduleList {
if err := module.Start(); err != nil {
return err
}
}()
}
discover.Listen()
p.server = server.NewServer(config.Get().Serve.Grpc.TTL)
p.server.Init(config.Get().Serve.Grpc.Address, config.Get().Serve.Grpc.Port)
log.Infof(fmt.Sprintf("%v Start successful...", config.Get().App.Name))
return nil
}
func (p *Program) Stop() error {
defer func() {
if err := recover(); err != nil {
fmt.Printf("Stop err: %v", err)
debug.PrintStack()
}
}()
discover.Close()
p.server.Close()
_ = etcd.Close()
for i := len(p.moduleList) - 1; i >= 0; i-- {
module := p.moduleList[i]
if err := module.Stop(); err != nil {
log.Errorf("module stop error: %v", err)
}
}
log.Infof(fmt.Sprintf("%v Stop successful...", config.Get().App.Name))
return nil
}