Compare commits
4 Commits
v0.3.6
...
api/v0.0.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5e85934e35 | ||
|
|
edbcad5973 | ||
|
|
6711cb7613 | ||
|
|
d7b7e9e8fd |
21
bootstrap.go
21
bootstrap.go
@@ -24,6 +24,7 @@ var (
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// NewApp 创建应用程序
|
||||||
func NewApp(ll log.Logger, rr kratosRegistry.Registrar, srv ...transport.Server) *kratos.App {
|
func NewApp(ll log.Logger, rr kratosRegistry.Registrar, srv ...transport.Server) *kratos.App {
|
||||||
return kratos.New(
|
return kratos.New(
|
||||||
kratos.ID(Service.GetInstanceId()),
|
kratos.ID(Service.GetInstanceId()),
|
||||||
@@ -38,8 +39,8 @@ func NewApp(ll log.Logger, rr kratosRegistry.Registrar, srv ...transport.Server)
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// doBootstrap 应用引导启动
|
// DoBootstrap 执行引导
|
||||||
func doBootstrap(serviceInfo *config.ServiceInfo) (*conf.Bootstrap, log.Logger, kratosRegistry.Registrar) {
|
func DoBootstrap(serviceInfo *config.ServiceInfo) (*conf.Bootstrap, log.Logger, kratosRegistry.Registrar) {
|
||||||
// inject command flags
|
// inject command flags
|
||||||
Flags := config.NewCommandFlags()
|
Flags := config.NewCommandFlags()
|
||||||
Flags.Init()
|
Flags.Init()
|
||||||
@@ -67,16 +68,26 @@ func doBootstrap(serviceInfo *config.ServiceInfo) (*conf.Bootstrap, log.Logger,
|
|||||||
|
|
||||||
type InitApp func(logger log.Logger, registrar kratosRegistry.Registrar, bootstrap *conf.Bootstrap) (*kratos.App, func(), error)
|
type InitApp func(logger log.Logger, registrar kratosRegistry.Registrar, bootstrap *conf.Bootstrap) (*kratos.App, func(), error)
|
||||||
|
|
||||||
func Bootstrap(initApp InitApp) {
|
// Bootstrap 应用引导启动
|
||||||
// bootstrap
|
func Bootstrap(initApp InitApp, serviceName, version *string) {
|
||||||
cfg, ll, reg := doBootstrap(Service)
|
if serviceName != nil && len(*serviceName) != 0 {
|
||||||
|
Service.Name = *serviceName
|
||||||
|
}
|
||||||
|
if version != nil && len(*version) != 0 {
|
||||||
|
Service.Version = *version
|
||||||
|
}
|
||||||
|
|
||||||
|
// bootstrap
|
||||||
|
cfg, ll, reg := DoBootstrap(Service)
|
||||||
|
|
||||||
|
// init app
|
||||||
app, cleanup, err := initApp(ll, reg, cfg)
|
app, cleanup, err := initApp(ll, reg, cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
defer cleanup()
|
defer cleanup()
|
||||||
|
|
||||||
|
// run the app.
|
||||||
if err = app.Run(); err != nil {
|
if err = app.Run(); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,19 +1,57 @@
|
|||||||
package bootstrap
|
package bootstrap
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
"github.com/go-kratos/kratos/v2"
|
"github.com/go-kratos/kratos/v2"
|
||||||
"github.com/go-kratos/kratos/v2/log"
|
"github.com/go-kratos/kratos/v2/log"
|
||||||
"github.com/go-kratos/kratos/v2/registry"
|
"github.com/go-kratos/kratos/v2/registry"
|
||||||
|
|
||||||
v1 "github.com/tx7do/kratos-bootstrap/api/gen/go/conf/v1"
|
v1 "github.com/tx7do/kratos-bootstrap/api/gen/go/conf/v1"
|
||||||
"testing"
|
"github.com/tx7do/kratos-bootstrap/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
func initApp(logger log.Logger, registrar registry.Registrar, bootstrap *v1.Bootstrap) (*kratos.App, func(), error) {
|
func initApp(logger log.Logger, registrar registry.Registrar, _ *v1.Bootstrap) (*kratos.App, func(), error) {
|
||||||
app := NewApp(logger, registrar)
|
app := NewApp(logger, registrar)
|
||||||
return app, func() {
|
return app, func() {
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestBootstrap(t *testing.T) {
|
func TestBootstrap(t *testing.T) {
|
||||||
Bootstrap(initApp)
|
serviceName := "test"
|
||||||
|
version := "v0.0.1"
|
||||||
|
Bootstrap(initApp, &serviceName, &version)
|
||||||
|
}
|
||||||
|
|
||||||
|
type CustomConfig struct {
|
||||||
|
Cfg string `protobuf:"bytes,1,opt,name=cfg,proto3" json:"cfg,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func initAppEx(logger log.Logger, registrar registry.Registrar, _ *v1.Bootstrap, _ *CustomConfig) (*kratos.App, func(), error) {
|
||||||
|
app := NewApp(logger, registrar)
|
||||||
|
return app, func() {
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCustomBootstrap(t *testing.T) {
|
||||||
|
customCfg := &CustomConfig{}
|
||||||
|
config.RegisterConfig(customCfg)
|
||||||
|
|
||||||
|
Service.SetName("test")
|
||||||
|
Service.SetVersion("v0.0.1")
|
||||||
|
|
||||||
|
// bootstrap
|
||||||
|
cfg, ll, reg := DoBootstrap(Service)
|
||||||
|
|
||||||
|
// init app
|
||||||
|
app, cleanup, err := initAppEx(ll, reg, cfg, customCfg)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
defer cleanup()
|
||||||
|
|
||||||
|
// run the app.
|
||||||
|
if err = app.Run(); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,14 @@ func NewServiceInfo(name, version, id string) *ServiceInfo {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *ServiceInfo) SetName(name string) {
|
||||||
|
s.Name = name
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ServiceInfo) SetVersion(version string) {
|
||||||
|
s.Version = version
|
||||||
|
}
|
||||||
|
|
||||||
func (s *ServiceInfo) GetInstanceId() string {
|
func (s *ServiceInfo) GetInstanceId() string {
|
||||||
return s.Id + "." + s.Name
|
return s.Id + "." + s.Name
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user