退出时关闭所有数据源连接
This commit is contained in:
parent
9be07ca18b
commit
3643fb25eb
@ -40,5 +40,6 @@ func Main() {
|
|||||||
quit := make(chan os.Signal, 1)
|
quit := make(chan os.Signal, 1)
|
||||||
signal.Notify(quit, os.Interrupt)
|
signal.Notify(quit, os.Interrupt)
|
||||||
<-quit
|
<-quit
|
||||||
app.Shutdown()
|
|
||||||
|
defer app.Shutdown()
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,11 @@ func Shutdown() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Log().Infof("关闭服务")
|
fib.Exec(func() {
|
||||||
|
database.Close()
|
||||||
|
})
|
||||||
|
|
||||||
|
logger.Log().Info("关闭服务")
|
||||||
timeout := 5 * time.Second
|
timeout := 5 * time.Second
|
||||||
err := app.ShutdownWithTimeout(timeout)
|
err := app.ShutdownWithTimeout(timeout)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -2,7 +2,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"matrix-middle-service/cmd/service"
|
"matrix-middle-service/cmd/service"
|
||||||
_ "matrix-middle-service/pkg/database/mysql"
|
_ "matrix-middle-service/pkg/database/driver/mysql"
|
||||||
_ "matrix-middle-service/pkg/logger"
|
_ "matrix-middle-service/pkg/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -23,7 +23,6 @@ func Init(conf []interface{}) {
|
|||||||
for _, item := range conf {
|
for _, item := range conf {
|
||||||
dst := config.DataSourcesType[any]{}
|
dst := config.DataSourcesType[any]{}
|
||||||
_ = mapstructure.Decode(item, &dst)
|
_ = mapstructure.Decode(item, &dst)
|
||||||
logger.Log().Infof("%+v", dst)
|
|
||||||
|
|
||||||
fn, ok := SupportDataSources[dst.Type]
|
fn, ok := SupportDataSources[dst.Type]
|
||||||
if !ok {
|
if !ok {
|
||||||
@ -51,3 +50,10 @@ func Open() (err error) {
|
|||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Close() {
|
||||||
|
for _, driver := range drivers {
|
||||||
|
_ = driver.Close()
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
@ -26,12 +26,12 @@ func init() {
|
|||||||
database.Register("mysql", func(c config.DataSourcesType[any]) database.DataBase {
|
database.Register("mysql", func(c config.DataSourcesType[any]) database.DataBase {
|
||||||
mc := &conf.Config{}
|
mc := &conf.Config{}
|
||||||
_ = mapstructure.Decode(c.Config, &mc)
|
_ = mapstructure.Decode(c.Config, &mc)
|
||||||
logger.Log().Infof("%+v,%+v,%+v", c.Enable, mc.Name(), mc.DataSources)
|
|
||||||
|
|
||||||
if dbEngine != nil {
|
if dbEngine != nil {
|
||||||
_ = dbEngine.Close()
|
_ = dbEngine.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logger.Log().Debug("[mysql] 数据源初始化")
|
||||||
var err error
|
var err error
|
||||||
dbEngine, err = xorm.NewEngineGroup("mysql", mc.DataSources)
|
dbEngine, err = xorm.NewEngineGroup("mysql", mc.DataSources)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -53,10 +53,12 @@ type db struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (d *db) Close() error {
|
func (d *db) Close() error {
|
||||||
|
logger.Log().Debug("[mysql] 关闭数据库连接")
|
||||||
return d.db.Close()
|
return d.db.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *db) Open() (err error) {
|
func (d *db) Open() (err error) {
|
||||||
|
logger.Log().Debug("[mysql] 连接数据库")
|
||||||
// 自动创建数据库
|
// 自动创建数据库
|
||||||
for _, dsn := range d.config.DataSources {
|
for _, dsn := range d.config.DataSources {
|
||||||
dbName := ParseSqlConnDBName(dsn)
|
dbName := ParseSqlConnDBName(dsn)
|
||||||
@ -69,8 +71,8 @@ func (d *db) Open() (err error) {
|
|||||||
|
|
||||||
err = d.db.Ping()
|
err = d.db.Ping()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Log().Fatal(err)
|
logger.Log().Fatalf("[mysql] 数据库连接失败, %s", err)
|
||||||
}
|
}
|
||||||
|
logger.Log().Debug("[mysql] 数据库连接成功")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user