优化服务退出流程,增加中间件文档

This commit is contained in:
孟帅
2023-05-15 18:37:40 +08:00
parent fdefb42253
commit c511a2e6b3
30 changed files with 335 additions and 97 deletions

View File

@@ -7,9 +7,9 @@ package cmd
import (
"context"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gcmd"
"hotgo/internal/service"
"os"
)
var (
@@ -20,17 +20,17 @@ var (
Func: func(ctx context.Context, parser *gcmd.Parser) (err error) {
service.AuthClient().Start(ctx)
// 退出信号监听
signalListen(ctx, func(sig os.Signal) {
service.AuthClient().Stop(ctx)
})
serverWg.Add(1)
// 信号监听
signalListen(ctx, signalHandlerForOverall)
select {
case <-serverCloseSignal:
// ...
service.AuthClient().Stop(ctx)
serverWg.Done()
}
g.Log().Debug(ctx, "auth successfully closed ..")
return
},
}

View File

@@ -13,8 +13,7 @@ import (
)
var (
serverCloseSignal chan struct{}
Main = &gcmd.Command{
Main = &gcmd.Command{
Description: `默认启动所有服务`,
Func: func(ctx context.Context, parser *gcmd.Parser) (err error) {
return All.Func(ctx, parser)
@@ -76,10 +75,10 @@ var (
select {
case <-serverCloseSignal:
// ...
serverWg.Wait()
}
g.Log().Debug(ctx, "service successfully closed ..")
g.Log().Debug(ctx, "all service successfully closed ..")
return
},
}
@@ -89,5 +88,4 @@ func init() {
if err := Main.AddCommand(All, Http, Queue, Cron, Auth, Tools, Help); err != nil {
panic(err)
}
serverCloseSignal = make(chan struct{}, 1)
}

View File

@@ -7,10 +7,10 @@ package cmd
import (
"context"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gcmd"
"hotgo/internal/crons"
"hotgo/internal/service"
"os"
)
var (
@@ -25,17 +25,18 @@ var (
// tcp客户端
service.CronClient().Start(ctx)
// 退出信号监听
signalListen(ctx, func(sig os.Signal) {
service.CronClient().Stop(ctx)
crons.StopALL()
serverCloseSignal <- struct{}{}
})
serverWg.Add(1)
// 信号监听
signalListen(ctx, signalHandlerForOverall)
select {
case <-serverCloseSignal:
// ...
service.CronClient().Stop(ctx)
crons.StopALL()
serverWg.Done()
}
g.Log().Debug(ctx, "cron successfully closed ..")
return
},
}

View File

@@ -3,7 +3,6 @@
// @Copyright Copyright (c) 2023 HotGo CLI
// @Author Ms <133814250@qq.com>
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
//
package cmd
import (
@@ -11,6 +10,12 @@ import (
"github.com/gogf/gf/v2/os/gproc"
"hotgo/utility/simple"
"os"
"sync"
)
var (
serverCloseSignal = make(chan struct{}, 1)
serverWg = sync.WaitGroup{}
)
func signalHandlerForOverall(sig os.Signal) {

View File

@@ -10,13 +10,11 @@ import (
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
"github.com/gogf/gf/v2/os/gcmd"
"hotgo/internal/crons"
"hotgo/internal/library/addons"
"hotgo/internal/library/casbin"
"hotgo/internal/router"
"hotgo/internal/service"
"hotgo/internal/websocket"
"os"
)
var (
@@ -77,13 +75,20 @@ var (
// https
setSSL(ctx, s)
// 退出信号监听
signalListen(ctx, func(sig os.Signal) {
s.Shutdown()
crons.StopALL()
websocket.Stop()
service.TCPServer().Stop(ctx)
})
serverWg.Add(1)
// 信号监听
signalListen(ctx, signalHandlerForOverall)
go func() {
select {
case <-serverCloseSignal:
websocket.Stop()
service.TCPServer().Stop(ctx)
s.Shutdown() // 主服务建议放在最后一个关闭
g.Log().Debug(ctx, "http successfully closed ..")
serverWg.Done()
}
}()
// Just run the server.
s.Run()

View File

@@ -25,12 +25,14 @@ var (
g.Log().Debug(ctx, "start queue consumer success..")
})
serverWg.Add(1)
// 信号监听
signalListen(ctx, signalHandlerForOverall)
select {
case <-serverCloseSignal:
// ...
serverWg.Done()
}
g.Log().Debug(ctx, "queue successfully closed ..")